{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Initialize Folders"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The autoreload extension is already loaded. To reload it, use:\n",
      "  %reload_ext autoreload\n"
     ]
    }
   ],
   "source": [
    "from __future__ import print_function\n",
    "from imutils import paths\n",
    "import os\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib\n",
    "import numpy as np\n",
    "import keras\n",
    "import tensorflow as tf\n",
    "from keras.preprocessing import image as image_utils\n",
    "from keras.preprocessing.image import load_img\n",
    "from keras.preprocessing.image import img_to_array\n",
    "from keras.preprocessing.image import array_to_img\n",
    "from keras.preprocessing.image import ImageDataGenerator\n",
    "from keras.models import *\n",
    "from keras.layers import *\n",
    "from keras.optimizers import *\n",
    "from keras.callbacks import ModelCheckpoint, LearningRateScheduler, TensorBoard\n",
    "#from keras import backend as keras\n",
    "from keras.layers.advanced_activations import LeakyReLU, PReLU\n",
    "\n",
    "\n",
    "#import skimage.io as io\n",
    "#import skimage.transform as trans\n",
    "\n",
    "#K.set_image_data_format(\"channels_last\")\n",
    "\n",
    "%matplotlib inline\n",
    "%load_ext autoreload\n",
    "%autoreload 2\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [],
   "source": [
    "root_dir = './data'\n",
    "training_data_dir = os.path.join(root_dir, 'train/images')\n",
    "training_data_mask_dir = os.path.join(root_dir, 'train/masks')\n",
    "\n",
    "val_data_dir = os.path.join(root_dir, 'val/images')\n",
    "val_data_pred_dir = os.path.join(root_dir, 'val/predict')\n",
    "val_data_mask_dir = os.path.join(root_dir, 'val/masks')\n",
    "\n",
    "test_data_dir = os.path.join(root_dir, 'test/images')\n",
    "test_data_pred_dir = os.path.join(root_dir, 'test/predict')\n",
    "test_data_mask_dir = os.path.join(root_dir, 'test/masks')\n",
    "\n",
    "model_localtion = \"attention_unet_lesion.hdf5\"\n",
    "result_file = \"attention_unet_test_result.csv\"\n",
    "img_rows = 256\n",
    "img_cols = 256"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Define Loss function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [],
   "source": [
    "def jaccard_coef(y_true, y_pred):\n",
    "    smooth = 1.\n",
    "    y_true_f = K.flatten(y_true)\n",
    "    y_pred_f = K.flatten(y_pred)\n",
    "    intersection = K.sum(y_true_f * y_pred_f)\n",
    "    return (intersection + smooth) / (K.sum(y_true_f) + K.sum(y_pred_f) - intersection + smooth)\n",
    "\n",
    "def jaccard_coef_loss(y_true, y_pred):\n",
    "    j = -jaccard_coef(y_true, y_pred)\n",
    "    return j"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [],
   "source": [
    "# DO NOT USE\n",
    "def normalizeData_rgb(img,mask):\n",
    "    for i in range(3):\n",
    "        mean = np.mean(img[:,:,i])  # mean for data centering\n",
    "        std = np.std(img[:,:,i])  # std for data normalization\n",
    "        img[:,:,i] -= mean\n",
    "        img[:,:,i] /= std\n",
    "    mask = mask /255\n",
    "    mask[mask > 0.5] = 1\n",
    "    mask[mask <= 0.5] = 0\n",
    "    return (img,mask)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [],
   "source": [
    "def normalizeData(img,mask):\n",
    "    mean = np.mean(img)  # mean for data centering\n",
    "    std = np.std(img)  # std for data normalization\n",
    "    img -= mean\n",
    "    img /= std\n",
    "    mask = mask /255\n",
    "    mask[mask > 0.5] = 1\n",
    "    mask[mask <= 0.5] = 0\n",
    "    return (img,mask)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [],
   "source": [
    "def trainGenerator(batch_size,train_path,image_folder,mask_folder,aug_dict,image_color_mode = \"rgb\",\n",
    "                    mask_color_mode = \"grayscale\",image_save_prefix  = \"image\",mask_save_prefix  = \"mask\",\n",
    "                    flag_multi_class = False,num_class = 2,save_to_dir = None,target_size = (256,256),seed = 1):\n",
    "    '''\n",
    "    can generate image and mask at the same time\n",
    "    use the same seed for image_datagen and mask_datagen to ensure the transformation for image and mask is the same\n",
    "    if you want to visualize the results of generator, set save_to_dir = \"your path\"\n",
    "    '''\n",
    "    image_datagen = ImageDataGenerator(**aug_dict)\n",
    "    mask_datagen = ImageDataGenerator(**aug_dict)\n",
    "    image_generator = image_datagen.flow_from_directory(\n",
    "        train_path,\n",
    "        classes = [image_folder],\n",
    "        class_mode = None,\n",
    "        color_mode = image_color_mode,\n",
    "        target_size = target_size,\n",
    "        batch_size = batch_size,\n",
    "        save_to_dir = save_to_dir,\n",
    "        save_prefix  = image_save_prefix,\n",
    "        seed = seed)\n",
    "    mask_generator = mask_datagen.flow_from_directory(\n",
    "        train_path,\n",
    "        classes = [mask_folder],\n",
    "        class_mode = None,\n",
    "        color_mode = mask_color_mode,\n",
    "        target_size = target_size,\n",
    "        batch_size = batch_size,\n",
    "        save_to_dir = save_to_dir,\n",
    "        save_prefix  = mask_save_prefix,\n",
    "        seed = seed)\n",
    "    train_generator = zip(image_generator, mask_generator)\n",
    "    for (img,mask) in train_generator:\n",
    "        #img,mask = normalizeData_rgb(img,mask)\n",
    "        img, mask = normalizeData(img, mask)\n",
    "        yield (img,mask)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [],
   "source": [
    "def validationGenerator(batch_size,train_path,image_folder,mask_folder,aug_dict,image_color_mode = \"rgb\",\n",
    "                    mask_color_mode = \"grayscale\",image_save_prefix  = \"image\",mask_save_prefix  = \"mask\",\n",
    "                    flag_multi_class = False,num_class = 2,save_to_dir = None,target_size = (256,256),seed = 1):\n",
    "    '''\n",
    "    can generate image and mask at the same time\n",
    "    use the same seed for image_datagen and mask_datagen to ensure the transformation for image and mask is the same\n",
    "    if you want to visualize the results of generator, set save_to_dir = \"your path\"\n",
    "    '''\n",
    "    image_datagen = ImageDataGenerator(**aug_dict)\n",
    "    mask_datagen = ImageDataGenerator(**aug_dict)\n",
    "    image_generator = image_datagen.flow_from_directory(\n",
    "        train_path,\n",
    "        classes = [image_folder],\n",
    "        class_mode = None,\n",
    "        color_mode = image_color_mode,\n",
    "        target_size = target_size,\n",
    "        batch_size = batch_size,\n",
    "        save_to_dir = save_to_dir,\n",
    "        save_prefix  = image_save_prefix,\n",
    "        seed = seed)\n",
    "    mask_generator = mask_datagen.flow_from_directory(\n",
    "        train_path,\n",
    "        classes = [mask_folder],\n",
    "        class_mode = None,\n",
    "        color_mode = mask_color_mode,\n",
    "        target_size = target_size,\n",
    "        batch_size = batch_size,\n",
    "        save_to_dir = save_to_dir,\n",
    "        save_prefix  = mask_save_prefix,\n",
    "        seed = seed)\n",
    "    train_generator = zip(image_generator, mask_generator)\n",
    "    for (img,mask) in train_generator:\n",
    "        #img,mask = normalizeData_rgb(img,mask)\n",
    "        img, mask = normalizeData(img, mask)\n",
    "        yield (img,mask)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [],
   "source": [
    "def BiggerLeakyUnetModel():\n",
    "    inputs = Input((img_rows, img_cols,3))\n",
    "    conv1 = Conv2D(32, (3, 3), padding=\"same\")(inputs)\n",
    "    acti1 = LeakyReLU(alpha=0.001)(conv1)\n",
    "    conv1 = Conv2D(32, (3, 3), padding=\"same\")(acti1)\n",
    "    acti1 = LeakyReLU(alpha=0.001)(conv1)\n",
    "    pool1 = MaxPooling2D(pool_size=(2, 2))(acti1)\n",
    "\n",
    "    conv2 = Conv2D(64, (3, 3), padding=\"same\")(pool1)\n",
    "    acti2 = LeakyReLU(alpha=0.001)(conv2)\n",
    "    conv2 = Conv2D(64, (3, 3), padding=\"same\")(acti2)\n",
    "    acti2 = LeakyReLU(alpha=0.001)(conv2)\n",
    "    pool2 = MaxPooling2D(pool_size=(2, 2))(acti2)\n",
    "\n",
    "    conv3 = Conv2D(128, (3, 3), padding=\"same\")(pool2)\n",
    "    acti3 = LeakyReLU(alpha=0.001)(conv3)\n",
    "    conv3 = Conv2D(128, (3, 3), padding=\"same\")(acti3)\n",
    "    acti3 = LeakyReLU(alpha=0.001)(conv3)\n",
    "    pool3 = MaxPooling2D(pool_size=(2, 2))(acti3)\n",
    "\n",
    "    conv4 = Conv2D(256, (3, 3), padding=\"same\")(pool3)\n",
    "    acti4 = LeakyReLU(alpha=0.001)(conv4)\n",
    "    conv4 = Conv2D(256, (3, 3), padding=\"same\")(acti4)\n",
    "    acti4 = LeakyReLU(alpha=0.001)(conv4)\n",
    "    pool4 = MaxPooling2D(pool_size=(2, 2))(acti4)\n",
    "\n",
    "    conv5 = Conv2D(512, (3, 3), padding=\"same\")(pool4)\n",
    "    acti5 = LeakyReLU(alpha=0.001)(conv5)\n",
    "    conv5 = Conv2D(512, (3, 3), padding=\"same\")(acti5)\n",
    "    acti5 = LeakyReLU(alpha=0.001)(conv5)\n",
    "    pool5 = MaxPooling2D(pool_size=(2, 2))(acti5)\n",
    "\n",
    "    conv6 = Conv2D(1024, (3, 3), padding=\"same\")(pool5)\n",
    "    acti6 = LeakyReLU(alpha=0.001)(conv6)\n",
    "    conv6 = Conv2D(1024, (3, 3), padding=\"same\")(acti6)\n",
    "    acti6 = LeakyReLU(alpha=0.001)(conv6)\n",
    "    pool6 = MaxPooling2D(pool_size=(2, 2))(acti6)\n",
    "    \n",
    "    conv7 = Conv2D(2048, (3, 3), padding=\"same\")(pool6)\n",
    "    acti7 = LeakyReLU(alpha=0.001)(conv7)\n",
    "    conv7 = Conv2D(2048, (3, 3), padding=\"same\")(acti7)\n",
    "    acti7 = LeakyReLU(alpha=0.001)(conv7)\n",
    "\n",
    "    right_up6 = concatenate([UpSampling2D(size=(2, 2))(acti7), acti6], axis=3)\n",
    "    right_conv6 = Conv2D(512, (3, 3), padding=\"same\")(right_up6)\n",
    "    right_acti6 = LeakyReLU(alpha=0.001)(right_conv6)\n",
    "    right_conv6 = Conv2D(512, (3, 3), padding=\"same\")(right_acti6)\n",
    "    right_acti6 = LeakyReLU(alpha=0.001)(right_conv6)\n",
    "\n",
    "    right_up5 = concatenate([UpSampling2D(size=(2, 2))(right_acti6), acti5], axis=3)\n",
    "    right_conv5 = Conv2D(512, (3, 3), padding=\"same\")(right_up5)\n",
    "    right_acti5 = LeakyReLU(alpha=0.001)(right_conv5)\n",
    "    right_conv5 = Conv2D(512, (3, 3), padding=\"same\")(right_acti5)\n",
    "    right_acti5 = LeakyReLU(alpha=0.001)(right_conv5)\n",
    "\n",
    "    right_up4 = concatenate([UpSampling2D(size=(2, 2))(right_acti5), acti4], axis=3)\n",
    "    right_conv4 = Conv2D(256, (3, 3), padding=\"same\")(right_up4)\n",
    "    right_acti4 = LeakyReLU(alpha=0.001)(right_conv4)\n",
    "    right_conv4 = Conv2D(256, (3, 3), padding=\"same\")(right_acti4)\n",
    "    right_acti4 = LeakyReLU(alpha=0.001)(right_conv4)\n",
    "\n",
    "    right_up3 = concatenate([UpSampling2D(size=(2, 2))(right_acti4), acti3], axis=3)\n",
    "    right_conv3 = Conv2D(128, (3, 3), padding=\"same\")(right_up3)\n",
    "    right_acti3 = LeakyReLU(alpha=0.001)(right_conv3)\n",
    "    right_conv3 = Conv2D(128, (3, 3), padding=\"same\")(right_acti3)\n",
    "    right_acti3 = LeakyReLU(alpha=0.001)(right_conv3)\n",
    "\n",
    "    right_up2 = concatenate([UpSampling2D(size=(2, 2))(right_acti3), acti2], axis=3)\n",
    "    right_conv2 = Conv2D(64, (3, 3), padding=\"same\")(right_up2)\n",
    "    right_acti2 = LeakyReLU(alpha=0.001)(right_conv2)\n",
    "    right_conv2 = Conv2D(64, (3, 3), padding=\"same\")(right_acti2)\n",
    "    right_acti2 = LeakyReLU(alpha=0.001)(right_conv2)\n",
    "\n",
    "    right_up1 = concatenate([UpSampling2D(size=(2, 2))(right_acti2), acti1], axis=3)\n",
    "    right_conv1 = Conv2D(32, (3, 3), padding=\"same\")(right_up1)\n",
    "    right_acti1 = LeakyReLU(alpha=0.001)(right_conv1)\n",
    "    right_conv1 = Conv2D(32, (3, 3), padding=\"same\")(right_acti1)\n",
    "    right_acti1 = LeakyReLU(alpha=0.001)(right_conv1)\n",
    "\n",
    "    output = Conv2D(1, (1, 1), activation='sigmoid')(right_acti1)\n",
    "\n",
    "    model = Model(input=inputs, output=output)\n",
    "\n",
    "    model.compile(optimizer=Adam(lr=5e-5), loss=jaccard_coef_loss, metrics=[jaccard_coef])\n",
    "\n",
    "    return model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Define UNet Network"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [],
   "source": [
    "def conv_block(prevlayer, ch_out, prefix, strides=(1, 1)):\n",
    "    conv = Conv2D(ch_out, (3, 3), padding=\"same\", kernel_initializer=\"he_normal\", strides=strides, name=prefix + \"1_conv\")(prevlayer)\n",
    "    conv = BatchNormalization(name=prefix + \"1_bn\")(conv)\n",
    "    conv = LeakyReLU(alpha=0.001, name=prefix + \"1_activation\")(conv)\n",
    "    conv = Conv2D(ch_out, (3, 3), padding=\"same\", kernel_initializer=\"he_normal\", strides=strides, name=prefix + \"2_conv\")(conv)\n",
    "    conv = BatchNormalization(name=prefix + \"1_bn\")(conv)\n",
    "    conv = LeakyReLU(alpha=0.001, name=prefix + \"1_activation\")(conv)\n",
    "    return conv\n",
    "\n",
    "def double_block(prevlayer, filters, prefix, strides=(1, 1)):\n",
    "    layer1 = conv_block(prevlayer, filters, prefix+\"1\", strides)\n",
    "    layer2 = conv_block(layer1   , filters, prefix+\"2\", strides)\n",
    "    return layer2\n",
    "\n",
    "def up_sampling_block(up_sampling_layer, left_skip_layer, filters, prefix, strides = (1,1)):\n",
    "    up_layer = Concatenate([UpSampling2D(size=(2, 2))(up_sampling_layer), left_skip_layer], axis=3)\n",
    "    double_block_layer = double_block(up_layer, filters, prefix, strides)\n",
    "    return double_block_layer\n",
    "\n",
    "def attention_block(direct_layer, left_skip_layer, filters, prefix, kernel=(1,1), strides=(1,1)):\n",
    "    conv_skip = Conv2D(filters, kernel, kernel_initializer=\"he_normal\", strides=strides, name=prefix + \"skip_conv\")(left_skip_layer)\n",
    "    # TO Try: Add batch norm\n",
    "    conv_direct = Conv2D(filters, kernel, kernel_initializer=\"he_normal\", strides=strides, name=prefix + \"direct_conv\")(direct_layer)\n",
    "    # TO Try: Add batch norm\n",
    "    psi = add([conv_skip, conv_direct])\n",
    "    psi = LeakyReLU(alpha=0.001, name=prefix + \"_relu\")(psi)\n",
    "    psi = Conv2D(1, kernel, kernel_initializer=\"glorot_normal\", activation=\"sigmoid\", strides=strides, name=prefix + \"_att\")(psi)\n",
    "    return multiply([left_skip_layer, psi])\n",
    "    \n",
    "    \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [],
   "source": [
    "def AttentionUnetModel():\n",
    "    # 3 - RGB \n",
    "    # Based on BiggerLeakyUnetModel\n",
    "    inputs = Input((img_rows, img_cols,3))\n",
    "    conv1 = Conv2D(32, (3, 3), padding=\"same\")(inputs)\n",
    "    acti1 = LeakyReLU(alpha=0.001)(conv1)\n",
    "    conv1 = Conv2D(32, (3, 3), padding=\"same\")(acti1)\n",
    "    acti1 = LeakyReLU(alpha=0.001)(conv1)\n",
    "    pool1 = MaxPooling2D(pool_size=(2, 2))(acti1)\n",
    "\n",
    "    conv2 = Conv2D(64, (3, 3), padding=\"same\")(pool1)\n",
    "    acti2 = LeakyReLU(alpha=0.001)(conv2)\n",
    "    conv2 = Conv2D(64, (3, 3), padding=\"same\")(acti2)\n",
    "    acti2 = LeakyReLU(alpha=0.001)(conv2)\n",
    "    pool2 = MaxPooling2D(pool_size=(2, 2))(acti2)\n",
    "\n",
    "    conv3 = Conv2D(128, (3, 3), padding=\"same\")(pool2)\n",
    "    acti3 = LeakyReLU(alpha=0.001)(conv3)\n",
    "    conv3 = Conv2D(128, (3, 3), padding=\"same\")(acti3)\n",
    "    acti3 = LeakyReLU(alpha=0.001)(conv3)\n",
    "    pool3 = MaxPooling2D(pool_size=(2, 2))(acti3)\n",
    "\n",
    "    conv4 = Conv2D(256, (3, 3), padding=\"same\")(pool3)\n",
    "    acti4 = LeakyReLU(alpha=0.001)(conv4)\n",
    "    conv4 = Conv2D(256, (3, 3), padding=\"same\")(acti4)\n",
    "    acti4 = LeakyReLU(alpha=0.001)(conv4)\n",
    "    pool4 = MaxPooling2D(pool_size=(2, 2))(acti4)\n",
    "\n",
    "    conv5 = Conv2D(512, (3, 3), padding=\"same\")(pool4)\n",
    "    acti5 = LeakyReLU(alpha=0.001)(conv5)\n",
    "    conv5 = Conv2D(512, (3, 3), padding=\"same\")(acti5)\n",
    "    acti5 = LeakyReLU(alpha=0.001)(conv5)\n",
    "    pool5 = MaxPooling2D(pool_size=(2, 2))(acti5)\n",
    "\n",
    "    conv6 = Conv2D(1024, (3, 3), padding=\"same\")(pool5)\n",
    "    acti6 = LeakyReLU(alpha=0.001)(conv6)\n",
    "    conv6 = Conv2D(1024, (3, 3), padding=\"same\")(acti6)\n",
    "    acti6 = LeakyReLU(alpha=0.001)(conv6)\n",
    "    pool6 = MaxPooling2D(pool_size=(2, 2))(acti6)\n",
    "    \n",
    "    conv7 = Conv2D(2048, (3, 3), padding=\"same\")(pool6)\n",
    "    acti7 = LeakyReLU(alpha=0.001)(conv7)\n",
    "    conv7 = Conv2D(2048, (3, 3), padding=\"same\")(acti7)\n",
    "    acti7 = LeakyReLU(alpha=0.001)(conv7)\n",
    "\n",
    "    right_acti7 = UpSampling2D(size=(2, 2))(acti7)\n",
    "    right_att6 = attention_block(right_acti7, acti6, 1024, \"att6\")\n",
    "    right_up6 = concatenate([right_att6, right_acti7], axis=3)\n",
    "    right_conv6 = Conv2D(1024, (3, 3), padding=\"same\")(right_up6)\n",
    "    right_acti6 = LeakyReLU(alpha=0.001)(right_conv6)\n",
    "    right_conv6 = Conv2D(1024, (3, 3), padding=\"same\")(right_acti6)\n",
    "    right_acti6 = LeakyReLU(alpha=0.001)(right_conv6)\n",
    "\n",
    "    right_acti6 = UpSampling2D(size=(2, 2))(right_acti6)\n",
    "    right_att5 = attention_block(right_acti6, acti5, 512, \"att5\")\n",
    "    right_up5 = concatenate([right_att5, right_acti6], axis=3)\n",
    "    right_conv5 = Conv2D(512, (3, 3), padding=\"same\")(right_up5)\n",
    "    right_acti5 = LeakyReLU(alpha=0.001)(right_conv5)\n",
    "    right_conv5 = Conv2D(512, (3, 3), padding=\"same\")(right_acti5)\n",
    "    right_acti5 = LeakyReLU(alpha=0.001)(right_conv5)\n",
    "\n",
    "    right_acti5 = UpSampling2D(size=(2, 2))(right_acti5)\n",
    "    right_att4 = attention_block(right_acti5, acti4, 256, \"att4\")\n",
    "    right_up4 = concatenate([right_att4, right_acti5], axis=3)\n",
    "    right_conv4 = Conv2D(256, (3, 3), padding=\"same\")(right_up4)\n",
    "    right_acti4 = LeakyReLU(alpha=0.001)(right_conv4)\n",
    "    right_conv4 = Conv2D(256, (3, 3), padding=\"same\")(right_acti4)\n",
    "    right_acti4 = LeakyReLU(alpha=0.001)(right_conv4)\n",
    "\n",
    "    right_acti4 = UpSampling2D(size=(2, 2))(right_acti4)\n",
    "    right_att3 = attention_block(right_acti4, acti3, 128, \"att3\")\n",
    "    right_up3 = concatenate([right_att3, right_acti4], axis=3)\n",
    "    right_conv3 = Conv2D(128, (3, 3), padding=\"same\")(right_up3)\n",
    "    right_acti3 = LeakyReLU(alpha=0.001)(right_conv3)\n",
    "    right_conv3 = Conv2D(128, (3, 3), padding=\"same\")(right_acti3)\n",
    "    right_acti3 = LeakyReLU(alpha=0.001)(right_conv3)\n",
    "\n",
    "    right_acti3 = UpSampling2D(size=(2, 2))(right_acti3)\n",
    "    right_att2 = attention_block(right_acti3, acti2, 64, \"att2\")\n",
    "    right_up2 = concatenate([right_att2, right_acti3], axis=3)\n",
    "    right_conv2 = Conv2D(64, (3, 3), padding=\"same\")(right_up2)\n",
    "    right_acti2 = LeakyReLU(alpha=0.001)(right_conv2)\n",
    "    right_conv2 = Conv2D(64, (3, 3), padding=\"same\")(right_acti2)\n",
    "    right_acti2 = LeakyReLU(alpha=0.001)(right_conv2)\n",
    "\n",
    "    right_acti2 = UpSampling2D(size=(2, 2))(right_acti2)\n",
    "    right_att1 = attention_block(right_acti2, acti1, 32, \"att1\")\n",
    "    right_up1 = concatenate([right_att1, right_acti2], axis=3)\n",
    "    right_conv1 = Conv2D(32, (3, 3), padding=\"same\")(right_up1)\n",
    "    right_acti1 = LeakyReLU(alpha=0.001)(right_conv1)\n",
    "    right_conv1 = Conv2D(32, (3, 3), padding=\"same\")(right_acti1)\n",
    "    right_acti1 = LeakyReLU(alpha=0.001)(right_conv1)\n",
    "\n",
    "    output = Conv2D(1, (1, 1), activation='sigmoid')(right_acti1)\n",
    "\n",
    "    model = Model(input=inputs, output=output)\n",
    "\n",
    "    model.compile(optimizer=Adam(lr=5e-5), loss=jaccard_coef_loss, metrics=[jaccard_coef])\n",
    "\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_8 (InputLayer)            (None, 256, 256, 3)  0                                            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_177 (Conv2D)             (None, 256, 256, 32) 896         input_8[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_171 (LeakyReLU)     (None, 256, 256, 32) 0           conv2d_177[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_178 (Conv2D)             (None, 256, 256, 32) 9248        leaky_re_lu_171[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_172 (LeakyReLU)     (None, 256, 256, 32) 0           conv2d_178[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_43 (MaxPooling2D) (None, 128, 128, 32) 0           leaky_re_lu_172[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_179 (Conv2D)             (None, 128, 128, 64) 18496       max_pooling2d_43[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_173 (LeakyReLU)     (None, 128, 128, 64) 0           conv2d_179[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_180 (Conv2D)             (None, 128, 128, 64) 36928       leaky_re_lu_173[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_174 (LeakyReLU)     (None, 128, 128, 64) 0           conv2d_180[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_44 (MaxPooling2D) (None, 64, 64, 64)   0           leaky_re_lu_174[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_181 (Conv2D)             (None, 64, 64, 128)  73856       max_pooling2d_44[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_175 (LeakyReLU)     (None, 64, 64, 128)  0           conv2d_181[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_182 (Conv2D)             (None, 64, 64, 128)  147584      leaky_re_lu_175[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_176 (LeakyReLU)     (None, 64, 64, 128)  0           conv2d_182[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_45 (MaxPooling2D) (None, 32, 32, 128)  0           leaky_re_lu_176[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_183 (Conv2D)             (None, 32, 32, 256)  295168      max_pooling2d_45[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_177 (LeakyReLU)     (None, 32, 32, 256)  0           conv2d_183[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_184 (Conv2D)             (None, 32, 32, 256)  590080      leaky_re_lu_177[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_178 (LeakyReLU)     (None, 32, 32, 256)  0           conv2d_184[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_46 (MaxPooling2D) (None, 16, 16, 256)  0           leaky_re_lu_178[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_185 (Conv2D)             (None, 16, 16, 512)  1180160     max_pooling2d_46[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_179 (LeakyReLU)     (None, 16, 16, 512)  0           conv2d_185[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_186 (Conv2D)             (None, 16, 16, 512)  2359808     leaky_re_lu_179[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_180 (LeakyReLU)     (None, 16, 16, 512)  0           conv2d_186[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_47 (MaxPooling2D) (None, 8, 8, 512)    0           leaky_re_lu_180[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_187 (Conv2D)             (None, 8, 8, 1024)   4719616     max_pooling2d_47[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_181 (LeakyReLU)     (None, 8, 8, 1024)   0           conv2d_187[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_188 (Conv2D)             (None, 8, 8, 1024)   9438208     leaky_re_lu_181[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_182 (LeakyReLU)     (None, 8, 8, 1024)   0           conv2d_188[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_48 (MaxPooling2D) (None, 4, 4, 1024)   0           leaky_re_lu_182[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_189 (Conv2D)             (None, 4, 4, 2048)   18876416    max_pooling2d_48[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_183 (LeakyReLU)     (None, 4, 4, 2048)   0           conv2d_189[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_190 (Conv2D)             (None, 4, 4, 2048)   37750784    leaky_re_lu_183[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_184 (LeakyReLU)     (None, 4, 4, 2048)   0           conv2d_190[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "up_sampling2d_38 (UpSampling2D) (None, 8, 8, 2048)   0           leaky_re_lu_184[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att6skip_conv (Conv2D)          (None, 8, 8, 1024)   1049600     leaky_re_lu_182[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att6direct_conv (Conv2D)        (None, 8, 8, 1024)   2098176     up_sampling2d_38[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "add_19 (Add)                    (None, 8, 8, 1024)   0           att6skip_conv[0][0]              \n",
      "                                                                 att6direct_conv[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att6_relu (LeakyReLU)           (None, 8, 8, 1024)   0           add_19[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "att6_att (Conv2D)               (None, 8, 8, 1)      1025        att6_relu[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "multiply_19 (Multiply)          (None, 8, 8, 1024)   0           leaky_re_lu_182[0][0]            \n",
      "                                                                 att6_att[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_37 (Concatenate)    (None, 8, 8, 3072)   0           multiply_19[0][0]                \n",
      "                                                                 up_sampling2d_38[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_191 (Conv2D)             (None, 8, 8, 1024)   28312576    concatenate_37[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_185 (LeakyReLU)     (None, 8, 8, 1024)   0           conv2d_191[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_192 (Conv2D)             (None, 8, 8, 1024)   9438208     leaky_re_lu_185[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_186 (LeakyReLU)     (None, 8, 8, 1024)   0           conv2d_192[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "up_sampling2d_39 (UpSampling2D) (None, 16, 16, 1024) 0           leaky_re_lu_186[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att5skip_conv (Conv2D)          (None, 16, 16, 512)  262656      leaky_re_lu_180[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att5direct_conv (Conv2D)        (None, 16, 16, 512)  524800      up_sampling2d_39[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "add_20 (Add)                    (None, 16, 16, 512)  0           att5skip_conv[0][0]              \n",
      "                                                                 att5direct_conv[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att5_relu (LeakyReLU)           (None, 16, 16, 512)  0           add_20[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "att5_att (Conv2D)               (None, 16, 16, 1)    513         att5_relu[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "multiply_20 (Multiply)          (None, 16, 16, 512)  0           leaky_re_lu_180[0][0]            \n",
      "                                                                 att5_att[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_38 (Concatenate)    (None, 16, 16, 1536) 0           multiply_20[0][0]                \n",
      "                                                                 up_sampling2d_39[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_193 (Conv2D)             (None, 16, 16, 512)  7078400     concatenate_38[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_187 (LeakyReLU)     (None, 16, 16, 512)  0           conv2d_193[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_194 (Conv2D)             (None, 16, 16, 512)  2359808     leaky_re_lu_187[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_188 (LeakyReLU)     (None, 16, 16, 512)  0           conv2d_194[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "up_sampling2d_40 (UpSampling2D) (None, 32, 32, 512)  0           leaky_re_lu_188[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att4skip_conv (Conv2D)          (None, 32, 32, 256)  65792       leaky_re_lu_178[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att4direct_conv (Conv2D)        (None, 32, 32, 256)  131328      up_sampling2d_40[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "add_21 (Add)                    (None, 32, 32, 256)  0           att4skip_conv[0][0]              \n",
      "                                                                 att4direct_conv[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att4_relu (LeakyReLU)           (None, 32, 32, 256)  0           add_21[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "att4_att (Conv2D)               (None, 32, 32, 1)    257         att4_relu[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "multiply_21 (Multiply)          (None, 32, 32, 256)  0           leaky_re_lu_178[0][0]            \n",
      "                                                                 att4_att[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_39 (Concatenate)    (None, 32, 32, 768)  0           multiply_21[0][0]                \n",
      "                                                                 up_sampling2d_40[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_195 (Conv2D)             (None, 32, 32, 256)  1769728     concatenate_39[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_189 (LeakyReLU)     (None, 32, 32, 256)  0           conv2d_195[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_196 (Conv2D)             (None, 32, 32, 256)  590080      leaky_re_lu_189[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_190 (LeakyReLU)     (None, 32, 32, 256)  0           conv2d_196[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "up_sampling2d_41 (UpSampling2D) (None, 64, 64, 256)  0           leaky_re_lu_190[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att3skip_conv (Conv2D)          (None, 64, 64, 128)  16512       leaky_re_lu_176[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att3direct_conv (Conv2D)        (None, 64, 64, 128)  32896       up_sampling2d_41[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "add_22 (Add)                    (None, 64, 64, 128)  0           att3skip_conv[0][0]              \n",
      "                                                                 att3direct_conv[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att3_relu (LeakyReLU)           (None, 64, 64, 128)  0           add_22[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "att3_att (Conv2D)               (None, 64, 64, 1)    129         att3_relu[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "multiply_22 (Multiply)          (None, 64, 64, 128)  0           leaky_re_lu_176[0][0]            \n",
      "                                                                 att3_att[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_40 (Concatenate)    (None, 64, 64, 384)  0           multiply_22[0][0]                \n",
      "                                                                 up_sampling2d_41[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_197 (Conv2D)             (None, 64, 64, 128)  442496      concatenate_40[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_191 (LeakyReLU)     (None, 64, 64, 128)  0           conv2d_197[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_198 (Conv2D)             (None, 64, 64, 128)  147584      leaky_re_lu_191[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_192 (LeakyReLU)     (None, 64, 64, 128)  0           conv2d_198[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "up_sampling2d_42 (UpSampling2D) (None, 128, 128, 128 0           leaky_re_lu_192[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att2skip_conv (Conv2D)          (None, 128, 128, 64) 4160        leaky_re_lu_174[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att2direct_conv (Conv2D)        (None, 128, 128, 64) 8256        up_sampling2d_42[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "add_23 (Add)                    (None, 128, 128, 64) 0           att2skip_conv[0][0]              \n",
      "                                                                 att2direct_conv[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att2_relu (LeakyReLU)           (None, 128, 128, 64) 0           add_23[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "att2_att (Conv2D)               (None, 128, 128, 1)  65          att2_relu[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "multiply_23 (Multiply)          (None, 128, 128, 64) 0           leaky_re_lu_174[0][0]            \n",
      "                                                                 att2_att[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_41 (Concatenate)    (None, 128, 128, 192 0           multiply_23[0][0]                \n",
      "                                                                 up_sampling2d_42[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_199 (Conv2D)             (None, 128, 128, 64) 110656      concatenate_41[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_193 (LeakyReLU)     (None, 128, 128, 64) 0           conv2d_199[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_200 (Conv2D)             (None, 128, 128, 64) 36928       leaky_re_lu_193[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_194 (LeakyReLU)     (None, 128, 128, 64) 0           conv2d_200[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "up_sampling2d_43 (UpSampling2D) (None, 256, 256, 64) 0           leaky_re_lu_194[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att1skip_conv (Conv2D)          (None, 256, 256, 32) 1056        leaky_re_lu_172[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att1direct_conv (Conv2D)        (None, 256, 256, 32) 2080        up_sampling2d_43[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "add_24 (Add)                    (None, 256, 256, 32) 0           att1skip_conv[0][0]              \n",
      "                                                                 att1direct_conv[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att1_relu (LeakyReLU)           (None, 256, 256, 32) 0           add_24[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "att1_att (Conv2D)               (None, 256, 256, 1)  33          att1_relu[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "multiply_24 (Multiply)          (None, 256, 256, 32) 0           leaky_re_lu_172[0][0]            \n",
      "                                                                 att1_att[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_42 (Concatenate)    (None, 256, 256, 96) 0           multiply_24[0][0]                \n",
      "                                                                 up_sampling2d_43[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_201 (Conv2D)             (None, 256, 256, 32) 27680       concatenate_42[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_195 (LeakyReLU)     (None, 256, 256, 32) 0           conv2d_201[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_202 (Conv2D)             (None, 256, 256, 32) 9248        leaky_re_lu_195[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_196 (LeakyReLU)     (None, 256, 256, 32) 0           conv2d_202[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_203 (Conv2D)             (None, 256, 256, 1)  33          leaky_re_lu_196[0][0]            \n",
      "==================================================================================================\n",
      "Total params: 130,020,007\n",
      "Trainable params: 130,020,007\n",
      "Non-trainable params: 0\n",
      "__________________________________________________________________________________________________\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/udir/gwang/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:96: UserWarning: Update your `Model` call to the Keras 2 API: `Model(inputs=Tensor(\"in..., outputs=Tensor(\"co...)`\n"
     ]
    }
   ],
   "source": [
    "#Training data generation\n",
    "data_gen_args = dict(\n",
    "#    samplewise_center = True,\n",
    "#    samplewise_std_normalization = True,\n",
    "    rotation_range=180,\n",
    "    width_shift_range=0.05,\n",
    "    height_shift_range=0.05,\n",
    "    shear_range=0.05,\n",
    "    zoom_range=0.05,\n",
    "    horizontal_flip=True,\n",
    "    vertical_flip = True,\n",
    "    fill_mode='nearest')\n",
    "\n",
    "#Validation data generation\n",
    "data_val_gen_args = dict(\n",
    "    #samplewise_center = True,\n",
    "    #samplewise_std_normalization = True\n",
    "    )\n",
    "\n",
    "#Create UNet Model\n",
    "#model = FullUnetModel()\n",
    "#model = UnetModel()\n",
    "model = AttentionUnetModel()\n",
    "model.summary()\n",
    "#model = BiggerLeakyUnetModel()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Setup generator\n",
    "batch_size = 2\n",
    "\n",
    "myGene = trainGenerator(batch_size,'data/train','images','masks',data_gen_args)\n",
    "myValGene = validationGenerator(batch_size,'data/val','images','masks',data_val_gen_args)\n",
    "\n",
    "#Setup Checkpoint to only capture best estimate\n",
    "model_checkpoint = ModelCheckpoint(model_localtion, monitor='loss',verbose=1, save_best_only=True)\n",
    "\n",
    "#Enable tensorboard\n",
    "tensorBoard = TensorBoard(\n",
    "    log_dir='./logs', \n",
    "    histogram_freq=0, \n",
    "    batch_size=batch_size, \n",
    "    write_graph=True, \n",
    "    write_grads=False, \n",
    "    write_images=True, \n",
    "    embeddings_freq=0)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/100\n",
      "Found 519 images belonging to 1 classes.\n",
      "Found 1555 images belonging to 1 classes.\n",
      "Found 519 images belonging to 1 classes.\n",
      "Found 1555 images belonging to 1 classes.\n",
      "1000/1000 [==============================] - 595s 595ms/step - loss: -0.5839 - jaccard_coef: 0.5839 - val_loss: -0.7071 - val_jaccard_coef: 0.7071\n",
      "\n",
      "Epoch 00001: loss improved from inf to -0.58420, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 2/100\n",
      "1000/1000 [==============================] - 566s 566ms/step - loss: -0.7036 - jaccard_coef: 0.7036 - val_loss: -0.7191 - val_jaccard_coef: 0.7191\n",
      "\n",
      "Epoch 00002: loss improved from -0.58420 to -0.70349, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 3/100\n",
      "1000/1000 [==============================] - 600s 600ms/step - loss: -0.7198 - jaccard_coef: 0.7198 - val_loss: -0.7222 - val_jaccard_coef: 0.7222\n",
      "\n",
      "Epoch 00003: loss improved from -0.70349 to -0.71979, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 4/100\n",
      "1000/1000 [==============================] - 574s 574ms/step - loss: -0.7256 - jaccard_coef: 0.7256 - val_loss: -0.7575 - val_jaccard_coef: 0.7575\n",
      "\n",
      "Epoch 00004: loss improved from -0.71979 to -0.72586, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 5/100\n",
      "1000/1000 [==============================] - 590s 590ms/step - loss: -0.7375 - jaccard_coef: 0.7375 - val_loss: -0.7301 - val_jaccard_coef: 0.7301\n",
      "\n",
      "Epoch 00005: loss improved from -0.72586 to -0.73739, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 6/100\n",
      "1000/1000 [==============================] - 572s 572ms/step - loss: -0.7583 - jaccard_coef: 0.7583 - val_loss: -0.7474 - val_jaccard_coef: 0.7474\n",
      "\n",
      "Epoch 00006: loss improved from -0.73739 to -0.75816, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 7/100\n",
      "1000/1000 [==============================] - 581s 581ms/step - loss: -0.7317 - jaccard_coef: 0.7317 - val_loss: -0.7372 - val_jaccard_coef: 0.7372\n",
      "\n",
      "Epoch 00007: loss did not improve from -0.75816\n",
      "Epoch 8/100\n",
      "1000/1000 [==============================] - 579s 579ms/step - loss: -0.7511 - jaccard_coef: 0.7511 - val_loss: -0.7648 - val_jaccard_coef: 0.7648\n",
      "\n",
      "Epoch 00008: loss did not improve from -0.75816\n",
      "Epoch 9/100\n",
      "1000/1000 [==============================] - 588s 588ms/step - loss: -0.7692 - jaccard_coef: 0.7692 - val_loss: -0.7797 - val_jaccard_coef: 0.7797\n",
      "\n",
      "Epoch 00009: loss improved from -0.75816 to -0.76917, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 10/100\n",
      "1000/1000 [==============================] - 586s 586ms/step - loss: -0.7631 - jaccard_coef: 0.7631 - val_loss: -0.7596 - val_jaccard_coef: 0.7596\n",
      "\n",
      "Epoch 00010: loss did not improve from -0.76917\n",
      "Epoch 11/100\n",
      "1000/1000 [==============================] - 591s 591ms/step - loss: -0.7578 - jaccard_coef: 0.7578 - val_loss: -0.7671 - val_jaccard_coef: 0.7671\n",
      "\n",
      "Epoch 00011: loss did not improve from -0.76917\n",
      "Epoch 12/100\n",
      "1000/1000 [==============================] - 575s 575ms/step - loss: -0.7657 - jaccard_coef: 0.7657 - val_loss: -0.7715 - val_jaccard_coef: 0.7715\n",
      "\n",
      "Epoch 00012: loss did not improve from -0.76917\n",
      "Epoch 13/100\n",
      "1000/1000 [==============================] - 579s 579ms/step - loss: -0.7467 - jaccard_coef: 0.7467 - val_loss: -0.7633 - val_jaccard_coef: 0.7633\n",
      "\n",
      "Epoch 00013: loss did not improve from -0.76917\n",
      "Epoch 14/100\n",
      "1000/1000 [==============================] - 582s 582ms/step - loss: -0.7758 - jaccard_coef: 0.7758 - val_loss: -0.7850 - val_jaccard_coef: 0.7850\n",
      "\n",
      "Epoch 00014: loss improved from -0.76917 to -0.77572, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 15/100\n",
      "1000/1000 [==============================] - 573s 573ms/step - loss: -0.7735 - jaccard_coef: 0.7735 - val_loss: -0.7567 - val_jaccard_coef: 0.7567\n",
      "\n",
      "Epoch 00015: loss did not improve from -0.77572\n",
      "Epoch 16/100\n",
      "1000/1000 [==============================] - 572s 572ms/step - loss: -0.7770 - jaccard_coef: 0.7770 - val_loss: -0.7786 - val_jaccard_coef: 0.7786\n",
      "\n",
      "Epoch 00016: loss improved from -0.77572 to -0.77694, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 17/100\n",
      "1000/1000 [==============================] - 572s 572ms/step - loss: -0.7752 - jaccard_coef: 0.7752 - val_loss: -0.7807 - val_jaccard_coef: 0.7807\n",
      "\n",
      "Epoch 00017: loss did not improve from -0.77694\n",
      "Epoch 18/100\n",
      "1000/1000 [==============================] - 591s 591ms/step - loss: -0.7725 - jaccard_coef: 0.7725 - val_loss: -0.7812 - val_jaccard_coef: 0.7812\n",
      "\n",
      "Epoch 00018: loss did not improve from -0.77694\n",
      "Epoch 19/100\n",
      "1000/1000 [==============================] - 577s 577ms/step - loss: -0.7798 - jaccard_coef: 0.7798 - val_loss: -0.7730 - val_jaccard_coef: 0.7730\n",
      "\n",
      "Epoch 00019: loss improved from -0.77694 to -0.77972, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 20/100\n",
      "1000/1000 [==============================] - 578s 578ms/step - loss: -0.7748 - jaccard_coef: 0.7748 - val_loss: -0.7859 - val_jaccard_coef: 0.7859\n",
      "\n",
      "Epoch 00020: loss did not improve from -0.77972\n",
      "Epoch 21/100\n",
      "1000/1000 [==============================] - 571s 571ms/step - loss: -0.7703 - jaccard_coef: 0.7703 - val_loss: -0.7700 - val_jaccard_coef: 0.7700\n",
      "\n",
      "Epoch 00021: loss did not improve from -0.77972\n",
      "Epoch 22/100\n",
      "1000/1000 [==============================] - 578s 578ms/step - loss: -0.7688 - jaccard_coef: 0.7688 - val_loss: -0.7857 - val_jaccard_coef: 0.7857\n",
      "\n",
      "Epoch 00022: loss did not improve from -0.77972\n",
      "Epoch 23/100\n",
      "1000/1000 [==============================] - 568s 568ms/step - loss: -0.7805 - jaccard_coef: 0.7805 - val_loss: -0.7761 - val_jaccard_coef: 0.7761\n",
      "\n",
      "Epoch 00023: loss improved from -0.77972 to -0.78046, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 24/100\n",
      "1000/1000 [==============================] - 581s 581ms/step - loss: -0.7847 - jaccard_coef: 0.7847 - val_loss: -0.7821 - val_jaccard_coef: 0.7821\n",
      "\n",
      "Epoch 00024: loss improved from -0.78046 to -0.78461, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 25/100\n",
      "1000/1000 [==============================] - 580s 580ms/step - loss: -0.7851 - jaccard_coef: 0.7851 - val_loss: -0.7933 - val_jaccard_coef: 0.7933\n",
      "\n",
      "Epoch 00025: loss improved from -0.78461 to -0.78519, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 26/100\n",
      "1000/1000 [==============================] - 571s 571ms/step - loss: -0.7803 - jaccard_coef: 0.7803 - val_loss: -0.7875 - val_jaccard_coef: 0.7875\n",
      "\n",
      "Epoch 00026: loss did not improve from -0.78519\n",
      "Epoch 27/100\n",
      "1000/1000 [==============================] - 583s 583ms/step - loss: -0.7771 - jaccard_coef: 0.7771 - val_loss: -0.7751 - val_jaccard_coef: 0.7751\n",
      "\n",
      "Epoch 00027: loss did not improve from -0.78519\n",
      "Epoch 28/100\n",
      "1000/1000 [==============================] - 577s 577ms/step - loss: -0.7780 - jaccard_coef: 0.7780 - val_loss: -0.7876 - val_jaccard_coef: 0.7876\n",
      "\n",
      "Epoch 00028: loss did not improve from -0.78519\n",
      "Epoch 29/100\n",
      "1000/1000 [==============================] - 575s 575ms/step - loss: -0.7792 - jaccard_coef: 0.7792 - val_loss: -0.7888 - val_jaccard_coef: 0.7888\n",
      "\n",
      "Epoch 00029: loss did not improve from -0.78519\n",
      "Epoch 30/100\n",
      "1000/1000 [==============================] - 572s 572ms/step - loss: -0.7704 - jaccard_coef: 0.7704 - val_loss: -0.7809 - val_jaccard_coef: 0.7809\n",
      "\n",
      "Epoch 00030: loss did not improve from -0.78519\n",
      "Epoch 31/100\n",
      "1000/1000 [==============================] - 589s 589ms/step - loss: -0.7881 - jaccard_coef: 0.7881 - val_loss: -0.7954 - val_jaccard_coef: 0.7954\n",
      "\n",
      "Epoch 00031: loss improved from -0.78519 to -0.78805, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 32/100\n",
      "1000/1000 [==============================] - 564s 564ms/step - loss: -0.7805 - jaccard_coef: 0.7805 - val_loss: -0.7875 - val_jaccard_coef: 0.7875\n",
      "\n",
      "Epoch 00032: loss did not improve from -0.78805\n",
      "Epoch 33/100\n",
      "1000/1000 [==============================] - 581s 581ms/step - loss: -0.7885 - jaccard_coef: 0.7885 - val_loss: -0.7712 - val_jaccard_coef: 0.7712\n",
      "\n",
      "Epoch 00033: loss improved from -0.78805 to -0.78840, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 34/100\n",
      "1000/1000 [==============================] - 575s 575ms/step - loss: -0.7932 - jaccard_coef: 0.7932 - val_loss: -0.7705 - val_jaccard_coef: 0.7705\n",
      "\n",
      "Epoch 00034: loss improved from -0.78840 to -0.79315, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 35/100\n",
      "1000/1000 [==============================] - 581s 581ms/step - loss: -0.7800 - jaccard_coef: 0.7800 - val_loss: -0.7984 - val_jaccard_coef: 0.7984\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Epoch 00035: loss did not improve from -0.79315\n",
      "Epoch 36/100\n",
      "1000/1000 [==============================] - 581s 581ms/step - loss: -0.7857 - jaccard_coef: 0.7857 - val_loss: -0.7766 - val_jaccard_coef: 0.7766\n",
      "\n",
      "Epoch 00036: loss did not improve from -0.79315\n",
      "Epoch 37/100\n",
      "1000/1000 [==============================] - 578s 578ms/step - loss: -0.7893 - jaccard_coef: 0.7893 - val_loss: -0.7942 - val_jaccard_coef: 0.7942\n",
      "\n",
      "Epoch 00037: loss did not improve from -0.79315\n",
      "Epoch 38/100\n",
      "1000/1000 [==============================] - 572s 572ms/step - loss: -0.7855 - jaccard_coef: 0.7855 - val_loss: -0.7310 - val_jaccard_coef: 0.7310\n",
      "\n",
      "Epoch 00038: loss did not improve from -0.79315\n",
      "Epoch 39/100\n",
      "1000/1000 [==============================] - 582s 582ms/step - loss: -0.7882 - jaccard_coef: 0.7882 - val_loss: -0.7971 - val_jaccard_coef: 0.7971\n",
      "\n",
      "Epoch 00039: loss did not improve from -0.79315\n",
      "Epoch 40/100\n",
      "1000/1000 [==============================] - 574s 574ms/step - loss: -0.7946 - jaccard_coef: 0.7946 - val_loss: -0.7857 - val_jaccard_coef: 0.7857\n",
      "\n",
      "Epoch 00040: loss improved from -0.79315 to -0.79458, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 41/100\n",
      "1000/1000 [==============================] - 587s 587ms/step - loss: -0.7898 - jaccard_coef: 0.7898 - val_loss: -0.7982 - val_jaccard_coef: 0.7982\n",
      "\n",
      "Epoch 00041: loss did not improve from -0.79458\n",
      "Epoch 42/100\n",
      "1000/1000 [==============================] - 574s 574ms/step - loss: -0.7847 - jaccard_coef: 0.7847 - val_loss: -0.7702 - val_jaccard_coef: 0.7702\n",
      "\n",
      "Epoch 00042: loss did not improve from -0.79458\n",
      "Epoch 43/100\n",
      "1000/1000 [==============================] - 568s 568ms/step - loss: -0.7950 - jaccard_coef: 0.7950 - val_loss: -0.7945 - val_jaccard_coef: 0.7945\n",
      "\n",
      "Epoch 00043: loss improved from -0.79458 to -0.79497, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 44/100\n",
      "1000/1000 [==============================] - 594s 594ms/step - loss: -0.7940 - jaccard_coef: 0.7940 - val_loss: -0.7910 - val_jaccard_coef: 0.7910\n",
      "\n",
      "Epoch 00044: loss did not improve from -0.79497\n",
      "Epoch 45/100\n",
      "1000/1000 [==============================] - 563s 563ms/step - loss: -0.7884 - jaccard_coef: 0.7884 - val_loss: -0.7946 - val_jaccard_coef: 0.7946\n",
      "\n",
      "Epoch 00045: loss did not improve from -0.79497\n",
      "Epoch 46/100\n",
      "1000/1000 [==============================] - 577s 577ms/step - loss: -0.7871 - jaccard_coef: 0.7871 - val_loss: -0.7862 - val_jaccard_coef: 0.7862\n",
      "\n",
      "Epoch 00046: loss did not improve from -0.79497\n",
      "Epoch 47/100\n",
      "1000/1000 [==============================] - 583s 583ms/step - loss: -0.7944 - jaccard_coef: 0.7944 - val_loss: -0.7969 - val_jaccard_coef: 0.7969\n",
      "\n",
      "Epoch 00047: loss did not improve from -0.79497\n",
      "Epoch 48/100\n",
      "1000/1000 [==============================] - 572s 572ms/step - loss: -0.7920 - jaccard_coef: 0.7920 - val_loss: -0.7918 - val_jaccard_coef: 0.7918\n",
      "\n",
      "Epoch 00048: loss did not improve from -0.79497\n",
      "Epoch 49/100\n",
      "1000/1000 [==============================] - 574s 574ms/step - loss: -0.7907 - jaccard_coef: 0.7907 - val_loss: -0.7943 - val_jaccard_coef: 0.7943\n",
      "\n",
      "Epoch 00049: loss did not improve from -0.79497\n",
      "Epoch 50/100\n",
      "1000/1000 [==============================] - 577s 577ms/step - loss: -0.8002 - jaccard_coef: 0.8002 - val_loss: -0.7986 - val_jaccard_coef: 0.7986\n",
      "\n",
      "Epoch 00050: loss improved from -0.79497 to -0.80020, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 51/100\n",
      "1000/1000 [==============================] - 582s 582ms/step - loss: -0.7869 - jaccard_coef: 0.7869 - val_loss: -0.7874 - val_jaccard_coef: 0.7874\n",
      "\n",
      "Epoch 00051: loss did not improve from -0.80020\n",
      "Epoch 52/100\n",
      "1000/1000 [==============================] - 594s 594ms/step - loss: -0.7991 - jaccard_coef: 0.7991 - val_loss: -0.7863 - val_jaccard_coef: 0.7863\n",
      "\n",
      "Epoch 00052: loss did not improve from -0.80020\n",
      "Epoch 53/100\n",
      "1000/1000 [==============================] - 579s 579ms/step - loss: -0.7925 - jaccard_coef: 0.7925 - val_loss: -0.7919 - val_jaccard_coef: 0.7919\n",
      "\n",
      "Epoch 00053: loss did not improve from -0.80020\n",
      "Epoch 54/100\n",
      "1000/1000 [==============================] - 576s 576ms/step - loss: -0.7948 - jaccard_coef: 0.7948 - val_loss: -0.8037 - val_jaccard_coef: 0.8037\n",
      "\n",
      "Epoch 00054: loss did not improve from -0.80020\n",
      "Epoch 55/100\n",
      "1000/1000 [==============================] - 580s 580ms/step - loss: -0.8007 - jaccard_coef: 0.8007 - val_loss: -0.8024 - val_jaccard_coef: 0.8024\n",
      "\n",
      "Epoch 00055: loss improved from -0.80020 to -0.80063, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 56/100\n",
      "1000/1000 [==============================] - 578s 578ms/step - loss: -0.7907 - jaccard_coef: 0.7907 - val_loss: -0.7962 - val_jaccard_coef: 0.7962\n",
      "\n",
      "Epoch 00056: loss did not improve from -0.80063\n",
      "Epoch 57/100\n",
      "1000/1000 [==============================] - 572s 572ms/step - loss: -0.7996 - jaccard_coef: 0.7996 - val_loss: -0.7944 - val_jaccard_coef: 0.7944\n",
      "\n",
      "Epoch 00057: loss did not improve from -0.80063\n",
      "Epoch 58/100\n",
      "1000/1000 [==============================] - 570s 570ms/step - loss: -0.7908 - jaccard_coef: 0.7908 - val_loss: -0.7974 - val_jaccard_coef: 0.7974\n",
      "\n",
      "Epoch 00058: loss did not improve from -0.80063\n",
      "Epoch 59/100\n",
      "1000/1000 [==============================] - 591s 591ms/step - loss: -0.8005 - jaccard_coef: 0.8005 - val_loss: -0.8014 - val_jaccard_coef: 0.8014\n",
      "\n",
      "Epoch 00059: loss did not improve from -0.80063\n",
      "Epoch 60/100\n",
      "1000/1000 [==============================] - 572s 572ms/step - loss: -0.8027 - jaccard_coef: 0.8027 - val_loss: -0.8003 - val_jaccard_coef: 0.8003\n",
      "\n",
      "Epoch 00060: loss improved from -0.80063 to -0.80259, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 61/100\n",
      "1000/1000 [==============================] - 582s 582ms/step - loss: -0.7862 - jaccard_coef: 0.7862 - val_loss: -0.7955 - val_jaccard_coef: 0.7955\n",
      "\n",
      "Epoch 00061: loss did not improve from -0.80259\n",
      "Epoch 62/100\n",
      "1000/1000 [==============================] - 578s 578ms/step - loss: -0.7902 - jaccard_coef: 0.7902 - val_loss: -0.7961 - val_jaccard_coef: 0.7961\n",
      "\n",
      "Epoch 00062: loss did not improve from -0.80259\n",
      "Epoch 63/100\n",
      "1000/1000 [==============================] - 578s 578ms/step - loss: -0.8029 - jaccard_coef: 0.8029 - val_loss: -0.7985 - val_jaccard_coef: 0.7985\n",
      "\n",
      "Epoch 00063: loss improved from -0.80259 to -0.80285, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 64/100\n",
      "1000/1000 [==============================] - 583s 583ms/step - loss: -0.7983 - jaccard_coef: 0.7983 - val_loss: -0.7940 - val_jaccard_coef: 0.7940\n",
      "\n",
      "Epoch 00064: loss did not improve from -0.80285\n",
      "Epoch 65/100\n",
      "1000/1000 [==============================] - 573s 573ms/step - loss: -0.7986 - jaccard_coef: 0.7986 - val_loss: -0.8086 - val_jaccard_coef: 0.8086\n",
      "\n",
      "Epoch 00065: loss did not improve from -0.80285\n",
      "Epoch 66/100\n",
      "1000/1000 [==============================] - 589s 589ms/step - loss: -0.8098 - jaccard_coef: 0.8098 - val_loss: -0.8026 - val_jaccard_coef: 0.8026\n",
      "\n",
      "Epoch 00066: loss improved from -0.80285 to -0.80976, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 67/100\n",
      "1000/1000 [==============================] - 584s 584ms/step - loss: -0.8023 - jaccard_coef: 0.8023 - val_loss: -0.8006 - val_jaccard_coef: 0.8006\n",
      "\n",
      "Epoch 00067: loss did not improve from -0.80976\n",
      "Epoch 68/100\n",
      "1000/1000 [==============================] - 582s 582ms/step - loss: -0.8010 - jaccard_coef: 0.8010 - val_loss: -0.7982 - val_jaccard_coef: 0.7982\n",
      "\n",
      "Epoch 00068: loss did not improve from -0.80976\n",
      "Epoch 69/100\n",
      "1000/1000 [==============================] - 583s 583ms/step - loss: -0.8047 - jaccard_coef: 0.8047 - val_loss: -0.7978 - val_jaccard_coef: 0.7978\n",
      "\n",
      "Epoch 00069: loss did not improve from -0.80976\n",
      "Epoch 70/100\n",
      "1000/1000 [==============================] - 572s 572ms/step - loss: -0.8003 - jaccard_coef: 0.8003 - val_loss: -0.8053 - val_jaccard_coef: 0.8053\n",
      "\n",
      "Epoch 00070: loss did not improve from -0.80976\n",
      "Epoch 71/100\n",
      "1000/1000 [==============================] - 581s 581ms/step - loss: -0.8026 - jaccard_coef: 0.8026 - val_loss: -0.7920 - val_jaccard_coef: 0.7920\n",
      "\n",
      "Epoch 00071: loss did not improve from -0.80976\n",
      "Epoch 72/100\n",
      "1000/1000 [==============================] - 575s 575ms/step - loss: -0.8044 - jaccard_coef: 0.8044 - val_loss: -0.8082 - val_jaccard_coef: 0.8082\n",
      "\n",
      "Epoch 00072: loss did not improve from -0.80976\n",
      "Epoch 73/100\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1000/1000 [==============================] - 576s 576ms/step - loss: -0.8071 - jaccard_coef: 0.8071 - val_loss: -0.8110 - val_jaccard_coef: 0.8110\n",
      "\n",
      "Epoch 00073: loss did not improve from -0.80976\n",
      "Epoch 74/100\n",
      "1000/1000 [==============================] - 584s 584ms/step - loss: -0.8040 - jaccard_coef: 0.8040 - val_loss: -0.7910 - val_jaccard_coef: 0.7910\n",
      "\n",
      "Epoch 00074: loss did not improve from -0.80976\n",
      "Epoch 75/100\n",
      "1000/1000 [==============================] - 580s 580ms/step - loss: -0.7997 - jaccard_coef: 0.7997 - val_loss: -0.7944 - val_jaccard_coef: 0.7944\n",
      "\n",
      "Epoch 00075: loss did not improve from -0.80976\n",
      "Epoch 76/100\n",
      "1000/1000 [==============================] - 580s 580ms/step - loss: -0.7966 - jaccard_coef: 0.7966 - val_loss: -0.7831 - val_jaccard_coef: 0.7831\n",
      "\n",
      "Epoch 00076: loss did not improve from -0.80976\n",
      "Epoch 77/100\n",
      "1000/1000 [==============================] - 582s 582ms/step - loss: -0.8080 - jaccard_coef: 0.8080 - val_loss: -0.8062 - val_jaccard_coef: 0.8062\n",
      "\n",
      "Epoch 00077: loss did not improve from -0.80976\n",
      "Epoch 78/100\n",
      "1000/1000 [==============================] - 587s 587ms/step - loss: -0.8104 - jaccard_coef: 0.8104 - val_loss: -0.8129 - val_jaccard_coef: 0.8129\n",
      "\n",
      "Epoch 00078: loss improved from -0.80976 to -0.81039, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 79/100\n",
      "1000/1000 [==============================] - 575s 575ms/step - loss: -0.8021 - jaccard_coef: 0.8021 - val_loss: -0.7990 - val_jaccard_coef: 0.7990\n",
      "\n",
      "Epoch 00079: loss did not improve from -0.81039\n",
      "Epoch 80/100\n",
      "1000/1000 [==============================] - 564s 564ms/step - loss: -0.8072 - jaccard_coef: 0.8072 - val_loss: -0.7959 - val_jaccard_coef: 0.7959\n",
      "\n",
      "Epoch 00080: loss did not improve from -0.81039\n",
      "Epoch 81/100\n",
      "1000/1000 [==============================] - 590s 590ms/step - loss: -0.8013 - jaccard_coef: 0.8013 - val_loss: -0.7961 - val_jaccard_coef: 0.7961\n",
      "\n",
      "Epoch 00081: loss did not improve from -0.81039\n",
      "Epoch 82/100\n",
      "1000/1000 [==============================] - 585s 585ms/step - loss: -0.8057 - jaccard_coef: 0.8057 - val_loss: -0.8103 - val_jaccard_coef: 0.8103\n",
      "\n",
      "Epoch 00082: loss did not improve from -0.81039\n",
      "Epoch 83/100\n",
      "1000/1000 [==============================] - 561s 561ms/step - loss: -0.8053 - jaccard_coef: 0.8053 - val_loss: -0.7893 - val_jaccard_coef: 0.7893\n",
      "\n",
      "Epoch 00083: loss did not improve from -0.81039\n",
      "Epoch 84/100\n",
      "1000/1000 [==============================] - 588s 588ms/step - loss: -0.8089 - jaccard_coef: 0.8089 - val_loss: -0.8120 - val_jaccard_coef: 0.8120\n",
      "\n",
      "Epoch 00084: loss did not improve from -0.81039\n",
      "Epoch 85/100\n",
      "1000/1000 [==============================] - 585s 585ms/step - loss: -0.8092 - jaccard_coef: 0.8092 - val_loss: -0.8013 - val_jaccard_coef: 0.8013\n",
      "\n",
      "Epoch 00085: loss did not improve from -0.81039\n",
      "Epoch 86/100\n",
      "1000/1000 [==============================] - 582s 582ms/step - loss: -0.8173 - jaccard_coef: 0.8173 - val_loss: -0.8061 - val_jaccard_coef: 0.8061\n",
      "\n",
      "Epoch 00086: loss improved from -0.81039 to -0.81758, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 87/100\n",
      "1000/1000 [==============================] - 583s 583ms/step - loss: -0.8035 - jaccard_coef: 0.8035 - val_loss: -0.7914 - val_jaccard_coef: 0.7914\n",
      "\n",
      "Epoch 00087: loss did not improve from -0.81758\n",
      "Epoch 88/100\n",
      "1000/1000 [==============================] - 577s 577ms/step - loss: -0.8137 - jaccard_coef: 0.8137 - val_loss: -0.8151 - val_jaccard_coef: 0.8151\n",
      "\n",
      "Epoch 00088: loss did not improve from -0.81758\n",
      "Epoch 89/100\n",
      "1000/1000 [==============================] - 587s 587ms/step - loss: -0.8123 - jaccard_coef: 0.8123 - val_loss: -0.7937 - val_jaccard_coef: 0.7937\n",
      "\n",
      "Epoch 00089: loss did not improve from -0.81758\n",
      "Epoch 90/100\n",
      "1000/1000 [==============================] - 574s 574ms/step - loss: -0.8009 - jaccard_coef: 0.8009 - val_loss: -0.7859 - val_jaccard_coef: 0.7859\n",
      "\n",
      "Epoch 00090: loss did not improve from -0.81758\n",
      "Epoch 91/100\n",
      "1000/1000 [==============================] - 578s 578ms/step - loss: -0.8106 - jaccard_coef: 0.8106 - val_loss: -0.8039 - val_jaccard_coef: 0.8039\n",
      "\n",
      "Epoch 00091: loss did not improve from -0.81758\n",
      "Epoch 92/100\n",
      "1000/1000 [==============================] - 580s 580ms/step - loss: -0.8180 - jaccard_coef: 0.8180 - val_loss: -0.8052 - val_jaccard_coef: 0.8052\n",
      "\n",
      "Epoch 00092: loss improved from -0.81758 to -0.81812, saving model to attention_unet_lesion.hdf5\n",
      "Epoch 93/100\n",
      "1000/1000 [==============================] - 570s 570ms/step - loss: -0.8029 - jaccard_coef: 0.8029 - val_loss: -0.7974 - val_jaccard_coef: 0.7974\n",
      "\n",
      "Epoch 00093: loss did not improve from -0.81812\n",
      "Epoch 94/100\n",
      "1000/1000 [==============================] - 580s 580ms/step - loss: -0.8139 - jaccard_coef: 0.8139 - val_loss: -0.8086 - val_jaccard_coef: 0.8086\n",
      "\n",
      "Epoch 00094: loss did not improve from -0.81812\n",
      "Epoch 95/100\n",
      "1000/1000 [==============================] - 586s 586ms/step - loss: -0.8102 - jaccard_coef: 0.8102 - val_loss: -0.7790 - val_jaccard_coef: 0.7790\n",
      "\n",
      "Epoch 00095: loss did not improve from -0.81812\n",
      "Epoch 96/100\n",
      "1000/1000 [==============================] - 578s 578ms/step - loss: -0.8141 - jaccard_coef: 0.8141 - val_loss: -0.8053 - val_jaccard_coef: 0.8053\n",
      "\n",
      "Epoch 00096: loss did not improve from -0.81812\n",
      "Epoch 97/100\n",
      "1000/1000 [==============================] - 575s 575ms/step - loss: -0.8129 - jaccard_coef: 0.8129 - val_loss: -0.8008 - val_jaccard_coef: 0.8008\n",
      "\n",
      "Epoch 00097: loss did not improve from -0.81812\n",
      "Epoch 98/100\n",
      "1000/1000 [==============================] - 589s 589ms/step - loss: -0.8083 - jaccard_coef: 0.8083 - val_loss: -0.8120 - val_jaccard_coef: 0.8120\n",
      "\n",
      "Epoch 00098: loss did not improve from -0.81812\n",
      "Epoch 99/100\n",
      "1000/1000 [==============================] - 578s 578ms/step - loss: -0.8055 - jaccard_coef: 0.8055 - val_loss: -0.8130 - val_jaccard_coef: 0.8130\n",
      "\n",
      "Epoch 00099: loss did not improve from -0.81812\n",
      "Epoch 100/100\n",
      "1000/1000 [==============================] - 582s 582ms/step - loss: -0.8119 - jaccard_coef: 0.8119 - val_loss: -0.7997 - val_jaccard_coef: 0.7997\n",
      "\n",
      "Epoch 00100: loss did not improve from -0.81812\n"
     ]
    }
   ],
   "source": [
    "\n",
    "#Train\n",
    "history = model.fit_generator(\n",
    "    myGene,\n",
    "    steps_per_epoch = 1000, \n",
    "    #epochs=100,\n",
    "    epochs = 100,\n",
    "    callbacks=[model_checkpoint,tensorBoard],\n",
    "    validation_data=myValGene,\n",
    "    validation_steps=300)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'\\nhistory2 = model.fit_generator(\\n    myGene,\\n    steps_per_epoch = 1000, \\n    epochs=100,\\n    callbacks=[model_checkpoint,tensorBoard], \\n    initial_epoch = 125,\\n    validation_data=myValGene,\\n    validation_steps=200)\\n'"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Continue traing\n",
    "#Use initial_epoch \n",
    "'''\n",
    "history2 = model.fit_generator(\n",
    "    myGene,\n",
    "    steps_per_epoch = 1000, \n",
    "    epochs=100,\n",
    "    callbacks=[model_checkpoint,tensorBoard], \n",
    "    initial_epoch = 125,\n",
    "    validation_data=myValGene,\n",
    "    validation_steps=200)\n",
    "'''"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-0.7070843739581227, -0.7190667214198582, -0.7222494733751517, -0.7574803715257692, -0.7301398658244956, -0.7474031512297453, -0.737172081618006, -0.7647772939853955, -0.7796676511159524, -0.7596282971920274, -0.7670983085548738, -0.7714974457811633, -0.7632791900315811, -0.7849527529887047, -0.7567341528422447, -0.7786021017607843, -0.7807302976987994, -0.7811803551568014, -0.7730258728481693, -0.7858560147717046, -0.7699726932808035, -0.7856583144882685, -0.7761399410105309, -0.78211986282234, -0.7933064213081672, -0.787510887909693, -0.7751135435794948, -0.7876365192744489, -0.7888207388839658, -0.7808833458586806, -0.795417237125076, -0.7874720216493972, -0.7712001843147454, -0.7705354754236187, -0.798367138174619, -0.7766187042744211, -0.794171770596146, -0.7310235564144506, -0.7970542576924017, -0.7856846213689034, -0.798199270822369, -0.7702140977764766, -0.7944642457370965, -0.7909816143807267, -0.7946321860030418, -0.7861715174688144, -0.7968824321220633, -0.7917582532002253, -0.7942831592388663, -0.7986116580204892, -0.7873542548370281, -0.7863084210898964, -0.7919094237640425, -0.8037121459664481, -0.8024373864988253, -0.7961840197468839, -0.7943735832662535, -0.7974487107265772, -0.8013565704774697, -0.8002994338638197, -0.7955387064157822, -0.7960725228095393, -0.7985092717438986, -0.794009553868703, -0.8085655598187925, -0.8026269320554049, -0.8005925621433131, -0.7982488740017896, -0.7978492976230055, -0.8052621017861645, -0.7920167025968508, -0.8082181481414017, -0.8110029507577668, -0.7910383376285111, -0.7943573137854096, -0.783120755050238, -0.8061516777004344, -0.8129036633366327, -0.7990417772272791, -0.7958670743991417, -0.7960767116839181, -0.8102962767739527, -0.7893170490239021, -0.8120160629235842, -0.8013290404077358, -0.8061418959712345, -0.7914189354505682, -0.8151011116715624, -0.7937419829712885, -0.7858625399150913, -0.8039172700665468, -0.805197141678982, -0.7974408758005037, -0.8085617587243973, -0.7789561276344306, -0.805307917657599, -0.800831705083035, -0.8120371786858824, -0.8130099511952551, -0.7997053438713634]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot training & validation accuracy values\n",
    "print (history.history['val_loss'])\n",
    "plt.plot(history.history['jaccard_coef'])\n",
    "plt.plot(history.history['val_jaccard_coef'])\n",
    "plt.title('Coefficiency')\n",
    "plt.ylabel('Coefficiency')\n",
    "plt.xlabel('Epoch')\n",
    "plt.legend(['Train'], loc='upper left')\n",
    "plt.legend(['Validation'], loc='upper left')\n",
    "plt.show()\n",
    "\n",
    "# Plot training & validation loss values\n",
    "plt.plot(history.history['loss'])\n",
    "plt.plot(history.history['val_loss'])\n",
    "plt.title('Model loss')\n",
    "plt.ylabel('Loss')\n",
    "plt.xlabel('Epoch')\n",
    "plt.legend(['Train', 'Validation'], loc='upper left')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/udir/gwang/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:96: UserWarning: Update your `Model` call to the Keras 2 API: `Model(inputs=Tensor(\"in..., outputs=Tensor(\"co...)`\n"
     ]
    }
   ],
   "source": [
    "file_names = next(os.walk(test_data_dir))[2]\n",
    "\n",
    "model = AttentionUnetModel()\n",
    "model.load_weights(model_localtion)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on Model in module keras.engine.training object:\n",
      "\n",
      "class Model(keras.engine.network.Network)\n",
      " |  Model(*args, **kwargs)\n",
      " |  \n",
      " |  The `Model` class adds training & evaluation routines to a `Network`.\n",
      " |  \n",
      " |  Method resolution order:\n",
      " |      Model\n",
      " |      keras.engine.network.Network\n",
      " |      keras.engine.base_layer.Layer\n",
      " |      builtins.object\n",
      " |  \n",
      " |  Methods defined here:\n",
      " |  \n",
      " |  compile(self, optimizer, loss=None, metrics=None, loss_weights=None, sample_weight_mode=None, weighted_metrics=None, target_tensors=None, **kwargs)\n",
      " |      Configures the model for training.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          optimizer: String (name of optimizer) or optimizer instance.\n",
      " |              See [optimizers](/optimizers).\n",
      " |          loss: String (name of objective function) or objective function.\n",
      " |              See [losses](/losses).\n",
      " |              If the model has multiple outputs, you can use a different loss\n",
      " |              on each output by passing a dictionary or a list of losses.\n",
      " |              The loss value that will be minimized by the model\n",
      " |              will then be the sum of all individual losses.\n",
      " |          metrics: List of metrics to be evaluated by the model\n",
      " |              during training and testing.\n",
      " |              Typically you will use `metrics=['accuracy']`.\n",
      " |              To specify different metrics for different outputs of a\n",
      " |              multi-output model, you could also pass a dictionary,\n",
      " |              such as `metrics={'output_a': 'accuracy'}`.\n",
      " |          loss_weights: Optional list or dictionary specifying scalar\n",
      " |              coefficients (Python floats) to weight the loss contributions\n",
      " |              of different model outputs.\n",
      " |              The loss value that will be minimized by the model\n",
      " |              will then be the *weighted sum* of all individual losses,\n",
      " |              weighted by the `loss_weights` coefficients.\n",
      " |              If a list, it is expected to have a 1:1 mapping\n",
      " |              to the model's outputs. If a tensor, it is expected to map\n",
      " |              output names (strings) to scalar coefficients.\n",
      " |          sample_weight_mode: If you need to do timestep-wise\n",
      " |              sample weighting (2D weights), set this to `\"temporal\"`.\n",
      " |              `None` defaults to sample-wise weights (1D).\n",
      " |              If the model has multiple outputs, you can use a different\n",
      " |              `sample_weight_mode` on each output by passing a\n",
      " |              dictionary or a list of modes.\n",
      " |          weighted_metrics: List of metrics to be evaluated and weighted\n",
      " |              by sample_weight or class_weight during training and testing.\n",
      " |          target_tensors: By default, Keras will create placeholders for the\n",
      " |              model's target, which will be fed with the target data during\n",
      " |              training. If instead you would like to use your own\n",
      " |              target tensors (in turn, Keras will not expect external\n",
      " |              Numpy data for these targets at training time), you\n",
      " |              can specify them via the `target_tensors` argument. It can be\n",
      " |              a single tensor (for a single-output model), a list of tensors,\n",
      " |              or a dict mapping output names to target tensors.\n",
      " |          **kwargs: When using the Theano/CNTK backends, these arguments\n",
      " |              are passed into `K.function`.\n",
      " |              When using the TensorFlow backend,\n",
      " |              these arguments are passed into `tf.Session.run`.\n",
      " |      \n",
      " |      # Raises\n",
      " |          ValueError: In case of invalid arguments for\n",
      " |              `optimizer`, `loss`, `metrics` or `sample_weight_mode`.\n",
      " |  \n",
      " |  evaluate(self, x=None, y=None, batch_size=None, verbose=1, sample_weight=None, steps=None)\n",
      " |      Returns the loss value & metrics values for the model in test mode.\n",
      " |      \n",
      " |      Computation is done in batches.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          x: Numpy array of test data (if the model has a single input),\n",
      " |              or list of Numpy arrays (if the model has multiple inputs).\n",
      " |              If input layers in the model are named, you can also pass a\n",
      " |              dictionary mapping input names to Numpy arrays.\n",
      " |              `x` can be `None` (default) if feeding from\n",
      " |              framework-native tensors (e.g. TensorFlow data tensors).\n",
      " |          y: Numpy array of target (label) data\n",
      " |              (if the model has a single output),\n",
      " |              or list of Numpy arrays (if the model has multiple outputs).\n",
      " |              If output layers in the model are named, you can also pass a\n",
      " |              dictionary mapping output names to Numpy arrays.\n",
      " |              `y` can be `None` (default) if feeding from\n",
      " |              framework-native tensors (e.g. TensorFlow data tensors).\n",
      " |          batch_size: Integer or `None`.\n",
      " |              Number of samples per evaluation step.\n",
      " |              If unspecified, `batch_size` will default to 32.\n",
      " |          verbose: 0 or 1. Verbosity mode.\n",
      " |              0 = silent, 1 = progress bar.\n",
      " |          sample_weight: Optional Numpy array of weights for\n",
      " |              the test samples, used for weighting the loss function.\n",
      " |              You can either pass a flat (1D)\n",
      " |              Numpy array with the same length as the input samples\n",
      " |              (1:1 mapping between weights and samples),\n",
      " |              or in the case of temporal data,\n",
      " |              you can pass a 2D array with shape\n",
      " |              `(samples, sequence_length)`,\n",
      " |              to apply a different weight to every timestep of every sample.\n",
      " |              In this case you should make sure to specify\n",
      " |              `sample_weight_mode=\"temporal\"` in `compile()`.\n",
      " |          steps: Integer or `None`.\n",
      " |              Total number of steps (batches of samples)\n",
      " |              before declaring the evaluation round finished.\n",
      " |              Ignored with the default value of `None`.\n",
      " |      \n",
      " |      # Returns\n",
      " |          Scalar test loss (if the model has a single output and no metrics)\n",
      " |          or list of scalars (if the model has multiple outputs\n",
      " |          and/or metrics). The attribute `model.metrics_names` will give you\n",
      " |          the display labels for the scalar outputs.\n",
      " |  \n",
      " |  evaluate_generator(self, generator, steps=None, max_queue_size=10, workers=1, use_multiprocessing=False, verbose=0)\n",
      " |      Evaluates the model on a data generator.\n",
      " |      \n",
      " |      The generator should return the same kind of data\n",
      " |      as accepted by `test_on_batch`.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          generator: Generator yielding tuples (inputs, targets)\n",
      " |              or (inputs, targets, sample_weights)\n",
      " |              or an instance of Sequence (keras.utils.Sequence)\n",
      " |              object in order to avoid duplicate data\n",
      " |              when using multiprocessing.\n",
      " |          steps: Total number of steps (batches of samples)\n",
      " |              to yield from `generator` before stopping.\n",
      " |              Optional for `Sequence`: if unspecified, will use\n",
      " |              the `len(generator)` as a number of steps.\n",
      " |          max_queue_size: maximum size for the generator queue\n",
      " |          workers: Integer. Maximum number of processes to spin up\n",
      " |              when using process based threading.\n",
      " |              If unspecified, `workers` will default to 1. If 0, will\n",
      " |              execute the generator on the main thread.\n",
      " |          use_multiprocessing: if True, use process based threading.\n",
      " |              Note that because\n",
      " |              this implementation relies on multiprocessing,\n",
      " |              you should not pass\n",
      " |              non picklable arguments to the generator\n",
      " |              as they can't be passed\n",
      " |              easily to children processes.\n",
      " |          verbose: verbosity mode, 0 or 1.\n",
      " |      \n",
      " |      # Returns\n",
      " |          Scalar test loss (if the model has a single output and no metrics)\n",
      " |          or list of scalars (if the model has multiple outputs\n",
      " |          and/or metrics). The attribute `model.metrics_names` will give you\n",
      " |          the display labels for the scalar outputs.\n",
      " |      \n",
      " |      # Raises\n",
      " |          ValueError: In case the generator yields\n",
      " |              data in an invalid format.\n",
      " |  \n",
      " |  fit(self, x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None, **kwargs)\n",
      " |      Trains the model for a given number of epochs (iterations on a dataset).\n",
      " |      \n",
      " |      # Arguments\n",
      " |          x: Numpy array of training data (if the model has a single input),\n",
      " |              or list of Numpy arrays (if the model has multiple inputs).\n",
      " |              If input layers in the model are named, you can also pass a\n",
      " |              dictionary mapping input names to Numpy arrays.\n",
      " |              `x` can be `None` (default) if feeding from\n",
      " |              framework-native tensors (e.g. TensorFlow data tensors).\n",
      " |          y: Numpy array of target (label) data\n",
      " |              (if the model has a single output),\n",
      " |              or list of Numpy arrays (if the model has multiple outputs).\n",
      " |              If output layers in the model are named, you can also pass a\n",
      " |              dictionary mapping output names to Numpy arrays.\n",
      " |              `y` can be `None` (default) if feeding from\n",
      " |              framework-native tensors (e.g. TensorFlow data tensors).\n",
      " |          batch_size: Integer or `None`.\n",
      " |              Number of samples per gradient update.\n",
      " |              If unspecified, `batch_size` will default to 32.\n",
      " |          epochs: Integer. Number of epochs to train the model.\n",
      " |              An epoch is an iteration over the entire `x` and `y`\n",
      " |              data provided.\n",
      " |              Note that in conjunction with `initial_epoch`,\n",
      " |              `epochs` is to be understood as \"final epoch\".\n",
      " |              The model is not trained for a number of iterations\n",
      " |              given by `epochs`, but merely until the epoch\n",
      " |              of index `epochs` is reached.\n",
      " |          verbose: Integer. 0, 1, or 2. Verbosity mode.\n",
      " |              0 = silent, 1 = progress bar, 2 = one line per epoch.\n",
      " |          callbacks: List of `keras.callbacks.Callback` instances.\n",
      " |              List of callbacks to apply during training.\n",
      " |              See [callbacks](/callbacks).\n",
      " |          validation_split: Float between 0 and 1.\n",
      " |              Fraction of the training data to be used as validation data.\n",
      " |              The model will set apart this fraction of the training data,\n",
      " |              will not train on it, and will evaluate\n",
      " |              the loss and any model metrics\n",
      " |              on this data at the end of each epoch.\n",
      " |              The validation data is selected from the last samples\n",
      " |              in the `x` and `y` data provided, before shuffling.\n",
      " |          validation_data: tuple `(x_val, y_val)` or tuple\n",
      " |              `(x_val, y_val, val_sample_weights)` on which to evaluate\n",
      " |              the loss and any model metrics at the end of each epoch.\n",
      " |              The model will not be trained on this data.\n",
      " |              `validation_data` will override `validation_split`.\n",
      " |          shuffle: Boolean (whether to shuffle the training data\n",
      " |              before each epoch) or str (for 'batch').\n",
      " |              'batch' is a special option for dealing with the\n",
      " |              limitations of HDF5 data; it shuffles in batch-sized chunks.\n",
      " |              Has no effect when `steps_per_epoch` is not `None`.\n",
      " |          class_weight: Optional dictionary mapping class indices (integers)\n",
      " |              to a weight (float) value, used for weighting the loss function\n",
      " |              (during training only).\n",
      " |              This can be useful to tell the model to\n",
      " |              \"pay more attention\" to samples from\n",
      " |              an under-represented class.\n",
      " |          sample_weight: Optional Numpy array of weights for\n",
      " |              the training samples, used for weighting the loss function\n",
      " |              (during training only). You can either pass a flat (1D)\n",
      " |              Numpy array with the same length as the input samples\n",
      " |              (1:1 mapping between weights and samples),\n",
      " |              or in the case of temporal data,\n",
      " |              you can pass a 2D array with shape\n",
      " |              `(samples, sequence_length)`,\n",
      " |              to apply a different weight to every timestep of every sample.\n",
      " |              In this case you should make sure to specify\n",
      " |              `sample_weight_mode=\"temporal\"` in `compile()`.\n",
      " |          initial_epoch: Integer.\n",
      " |              Epoch at which to start training\n",
      " |              (useful for resuming a previous training run).\n",
      " |          steps_per_epoch: Integer or `None`.\n",
      " |              Total number of steps (batches of samples)\n",
      " |              before declaring one epoch finished and starting the\n",
      " |              next epoch. When training with input tensors such as\n",
      " |              TensorFlow data tensors, the default `None` is equal to\n",
      " |              the number of samples in your dataset divided by\n",
      " |              the batch size, or 1 if that cannot be determined.\n",
      " |          validation_steps: Only relevant if `steps_per_epoch`\n",
      " |              is specified. Total number of steps (batches of samples)\n",
      " |              to validate before stopping.\n",
      " |      \n",
      " |      # Returns\n",
      " |          A `History` object. Its `History.history` attribute is\n",
      " |          a record of training loss values and metrics values\n",
      " |          at successive epochs, as well as validation loss values\n",
      " |          and validation metrics values (if applicable).\n",
      " |      \n",
      " |      # Raises\n",
      " |          RuntimeError: If the model was never compiled.\n",
      " |          ValueError: In case of mismatch between the provided input data\n",
      " |              and what the model expects.\n",
      " |  \n",
      " |  fit_generator(self, generator, steps_per_epoch=None, epochs=1, verbose=1, callbacks=None, validation_data=None, validation_steps=None, class_weight=None, max_queue_size=10, workers=1, use_multiprocessing=False, shuffle=True, initial_epoch=0)\n",
      " |      Trains the model on data generated batch-by-batch by a Python generator\n",
      " |      (or an instance of `Sequence`).\n",
      " |      \n",
      " |      The generator is run in parallel to the model, for efficiency.\n",
      " |      For instance, this allows you to do real-time data augmentation\n",
      " |      on images on CPU in parallel to training your model on GPU.\n",
      " |      \n",
      " |      The use of `keras.utils.Sequence` guarantees the ordering\n",
      " |      and guarantees the single use of every input per epoch when\n",
      " |      using `use_multiprocessing=True`.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          generator: A generator or an instance of `Sequence`\n",
      " |              (`keras.utils.Sequence`) object in order to avoid\n",
      " |              duplicate data when using multiprocessing.\n",
      " |              The output of the generator must be either\n",
      " |              - a tuple `(inputs, targets)`\n",
      " |              - a tuple `(inputs, targets, sample_weights)`.\n",
      " |              This tuple (a single output of the generator) makes a single\n",
      " |              batch. Therefore, all arrays in this tuple must have the same\n",
      " |              length (equal to the size of this batch). Different batches may\n",
      " |              have different sizes. For example, the last batch of the epoch\n",
      " |              is commonly smaller than the others, if the size of the dataset\n",
      " |              is not divisible by the batch size.\n",
      " |              The generator is expected to loop over its data\n",
      " |              indefinitely. An epoch finishes when `steps_per_epoch`\n",
      " |              batches have been seen by the model.\n",
      " |          steps_per_epoch: Integer.\n",
      " |              Total number of steps (batches of samples)\n",
      " |              to yield from `generator` before declaring one epoch\n",
      " |              finished and starting the next epoch. It should typically\n",
      " |              be equal to the number of samples of your dataset\n",
      " |              divided by the batch size.\n",
      " |              Optional for `Sequence`: if unspecified, will use\n",
      " |              the `len(generator)` as a number of steps.\n",
      " |          epochs: Integer. Number of epochs to train the model.\n",
      " |              An epoch is an iteration over the entire data provided,\n",
      " |              as defined by `steps_per_epoch`.\n",
      " |              Note that in conjunction with `initial_epoch`,\n",
      " |              `epochs` is to be understood as \"final epoch\".\n",
      " |              The model is not trained for a number of iterations\n",
      " |              given by `epochs`, but merely until the epoch\n",
      " |              of index `epochs` is reached.\n",
      " |          verbose: Integer. 0, 1, or 2. Verbosity mode.\n",
      " |              0 = silent, 1 = progress bar, 2 = one line per epoch.\n",
      " |          callbacks: List of `keras.callbacks.Callback` instances.\n",
      " |              List of callbacks to apply during training.\n",
      " |              See [callbacks](/callbacks).\n",
      " |          validation_data: This can be either\n",
      " |              - a generator or a `Sequence` object for the validation data\n",
      " |              - tuple `(x_val, y_val)`\n",
      " |              - tuple `(x_val, y_val, val_sample_weights)`\n",
      " |              on which to evaluate\n",
      " |              the loss and any model metrics at the end of each epoch.\n",
      " |              The model will not be trained on this data.\n",
      " |          validation_steps: Only relevant if `validation_data`\n",
      " |              is a generator. Total number of steps (batches of samples)\n",
      " |              to yield from `validation_data` generator before stopping\n",
      " |              at the end of every epoch. It should typically\n",
      " |              be equal to the number of samples of your\n",
      " |              validation dataset divided by the batch size.\n",
      " |              Optional for `Sequence`: if unspecified, will use\n",
      " |              the `len(validation_data)` as a number of steps.\n",
      " |          class_weight: Optional dictionary mapping class indices (integers)\n",
      " |              to a weight (float) value, used for weighting the loss function\n",
      " |              (during training only). This can be useful to tell the model to\n",
      " |              \"pay more attention\" to samples\n",
      " |              from an under-represented class.\n",
      " |          max_queue_size: Integer. Maximum size for the generator queue.\n",
      " |              If unspecified, `max_queue_size` will default to 10.\n",
      " |          workers: Integer. Maximum number of processes to spin up\n",
      " |              when using process-based threading.\n",
      " |              If unspecified, `workers` will default to 1. If 0, will\n",
      " |              execute the generator on the main thread.\n",
      " |          use_multiprocessing: Boolean.\n",
      " |              If `True`, use process-based threading.\n",
      " |              If unspecified, `use_multiprocessing` will default to `False`.\n",
      " |              Note that because this implementation\n",
      " |              relies on multiprocessing,\n",
      " |              you should not pass non-picklable arguments to the generator\n",
      " |              as they can't be passed easily to children processes.\n",
      " |          shuffle: Boolean. Whether to shuffle the order of the batches at\n",
      " |              the beginning of each epoch. Only used with instances\n",
      " |              of `Sequence` (`keras.utils.Sequence`).\n",
      " |              Has no effect when `steps_per_epoch` is not `None`.\n",
      " |          initial_epoch: Integer.\n",
      " |              Epoch at which to start training\n",
      " |              (useful for resuming a previous training run).\n",
      " |      \n",
      " |      # Returns\n",
      " |          A `History` object. Its `History.history` attribute is\n",
      " |          a record of training loss values and metrics values\n",
      " |          at successive epochs, as well as validation loss values\n",
      " |          and validation metrics values (if applicable).\n",
      " |      \n",
      " |      # Raises\n",
      " |          ValueError: In case the generator yields data in an invalid format.\n",
      " |      \n",
      " |      # Example\n",
      " |      \n",
      " |      ```python\n",
      " |      def generate_arrays_from_file(path):\n",
      " |          while True:\n",
      " |              with open(path) as f:\n",
      " |                  for line in f:\n",
      " |                      # create numpy arrays of input data\n",
      " |                      # and labels, from each line in the file\n",
      " |                      x1, x2, y = process_line(line)\n",
      " |                      yield ({'input_1': x1, 'input_2': x2}, {'output': y})\n",
      " |      \n",
      " |      model.fit_generator(generate_arrays_from_file('/my_file.txt'),\n",
      " |                          steps_per_epoch=10000, epochs=10)\n",
      " |      ```\n",
      " |  \n",
      " |  predict(self, x, batch_size=None, verbose=0, steps=None)\n",
      " |      Generates output predictions for the input samples.\n",
      " |      \n",
      " |      Computation is done in batches.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          x: The input data, as a Numpy array\n",
      " |              (or list of Numpy arrays if the model has multiple inputs).\n",
      " |          batch_size: Integer. If unspecified, it will default to 32.\n",
      " |          verbose: Verbosity mode, 0 or 1.\n",
      " |          steps: Total number of steps (batches of samples)\n",
      " |              before declaring the prediction round finished.\n",
      " |              Ignored with the default value of `None`.\n",
      " |      \n",
      " |      # Returns\n",
      " |          Numpy array(s) of predictions.\n",
      " |      \n",
      " |      # Raises\n",
      " |          ValueError: In case of mismatch between the provided\n",
      " |              input data and the model's expectations,\n",
      " |              or in case a stateful model receives a number of samples\n",
      " |              that is not a multiple of the batch size.\n",
      " |  \n",
      " |  predict_generator(self, generator, steps=None, max_queue_size=10, workers=1, use_multiprocessing=False, verbose=0)\n",
      " |      Generates predictions for the input samples from a data generator.\n",
      " |      \n",
      " |      The generator should return the same kind of data as accepted by\n",
      " |      `predict_on_batch`.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          generator: Generator yielding batches of input samples\n",
      " |              or an instance of Sequence (keras.utils.Sequence)\n",
      " |              object in order to avoid duplicate data\n",
      " |              when using multiprocessing.\n",
      " |          steps: Total number of steps (batches of samples)\n",
      " |              to yield from `generator` before stopping.\n",
      " |              Optional for `Sequence`: if unspecified, will use\n",
      " |              the `len(generator)` as a number of steps.\n",
      " |          max_queue_size: Maximum size for the generator queue.\n",
      " |          workers: Integer. Maximum number of processes to spin up\n",
      " |              when using process based threading.\n",
      " |              If unspecified, `workers` will default to 1. If 0, will\n",
      " |              execute the generator on the main thread.\n",
      " |          use_multiprocessing: If `True`, use process based threading.\n",
      " |              Note that because\n",
      " |              this implementation relies on multiprocessing,\n",
      " |              you should not pass\n",
      " |              non picklable arguments to the generator\n",
      " |              as they can't be passed\n",
      " |              easily to children processes.\n",
      " |          verbose: verbosity mode, 0 or 1.\n",
      " |      \n",
      " |      # Returns\n",
      " |          Numpy array(s) of predictions.\n",
      " |      \n",
      " |      # Raises\n",
      " |          ValueError: In case the generator yields\n",
      " |              data in an invalid format.\n",
      " |  \n",
      " |  predict_on_batch(self, x)\n",
      " |      Returns predictions for a single batch of samples.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          x: Input samples, as a Numpy array.\n",
      " |      \n",
      " |      # Returns\n",
      " |          Numpy array(s) of predictions.\n",
      " |  \n",
      " |  test_on_batch(self, x, y, sample_weight=None)\n",
      " |      Test the model on a single batch of samples.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          x: Numpy array of test data,\n",
      " |              or list of Numpy arrays if the model has multiple inputs.\n",
      " |              If all inputs in the model are named,\n",
      " |              you can also pass a dictionary\n",
      " |              mapping input names to Numpy arrays.\n",
      " |          y: Numpy array of target data,\n",
      " |              or list of Numpy arrays if the model has multiple outputs.\n",
      " |              If all outputs in the model are named,\n",
      " |              you can also pass a dictionary\n",
      " |              mapping output names to Numpy arrays.\n",
      " |          sample_weight: Optional array of the same length as x, containing\n",
      " |              weights to apply to the model's loss for each sample.\n",
      " |              In the case of temporal data, you can pass a 2D array\n",
      " |              with shape (samples, sequence_length),\n",
      " |              to apply a different weight to every timestep of every sample.\n",
      " |              In this case you should make sure to specify\n",
      " |              sample_weight_mode=\"temporal\" in compile().\n",
      " |      \n",
      " |      # Returns\n",
      " |          Scalar test loss (if the model has a single output and no metrics)\n",
      " |          or list of scalars (if the model has multiple outputs\n",
      " |          and/or metrics). The attribute `model.metrics_names` will give you\n",
      " |          the display labels for the scalar outputs.\n",
      " |  \n",
      " |  train_on_batch(self, x, y, sample_weight=None, class_weight=None)\n",
      " |      Runs a single gradient update on a single batch of data.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          x: Numpy array of training data,\n",
      " |              or list of Numpy arrays if the model has multiple inputs.\n",
      " |              If all inputs in the model are named,\n",
      " |              you can also pass a dictionary\n",
      " |              mapping input names to Numpy arrays.\n",
      " |          y: Numpy array of target data,\n",
      " |              or list of Numpy arrays if the model has multiple outputs.\n",
      " |              If all outputs in the model are named,\n",
      " |              you can also pass a dictionary\n",
      " |              mapping output names to Numpy arrays.\n",
      " |          sample_weight: Optional array of the same length as x, containing\n",
      " |              weights to apply to the model's loss for each sample.\n",
      " |              In the case of temporal data, you can pass a 2D array\n",
      " |              with shape (samples, sequence_length),\n",
      " |              to apply a different weight to every timestep of every sample.\n",
      " |              In this case you should make sure to specify\n",
      " |              sample_weight_mode=\"temporal\" in compile().\n",
      " |          class_weight: Optional dictionary mapping\n",
      " |              class indices (integers) to\n",
      " |              a weight (float) to apply to the model's loss for the samples\n",
      " |              from this class during training.\n",
      " |              This can be useful to tell the model to \"pay more attention\" to\n",
      " |              samples from an under-represented class.\n",
      " |      \n",
      " |      # Returns\n",
      " |          Scalar training loss\n",
      " |          (if the model has a single output and no metrics)\n",
      " |          or list of scalars (if the model has multiple outputs\n",
      " |          and/or metrics). The attribute `model.metrics_names` will give you\n",
      " |          the display labels for the scalar outputs.\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Methods inherited from keras.engine.network.Network:\n",
      " |  \n",
      " |  __getstate__(self)\n",
      " |  \n",
      " |  __init__(self, *args, **kwargs)\n",
      " |      Initialize self.  See help(type(self)) for accurate signature.\n",
      " |  \n",
      " |  __setattr__(self, name, value)\n",
      " |      Implement setattr(self, name, value).\n",
      " |  \n",
      " |  __setstate__(self, state)\n",
      " |  \n",
      " |  call(self, inputs, mask=None)\n",
      " |      Calls the model on new inputs.\n",
      " |      \n",
      " |      In this case `call` just reapplies\n",
      " |      all ops in the graph to the new inputs\n",
      " |      (e.g. build a new computational graph from the provided inputs).\n",
      " |      \n",
      " |      A model is callable on non-Keras tensors.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          inputs: A tensor or list of tensors.\n",
      " |          mask: A mask or list of masks. A mask can be\n",
      " |              either a tensor or None (no mask).\n",
      " |      \n",
      " |      # Returns\n",
      " |          A tensor if there is a single output, or\n",
      " |          a list of tensors if there are more than one outputs.\n",
      " |  \n",
      " |  compute_mask(self, inputs, mask)\n",
      " |      Computes an output mask tensor.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          inputs: Tensor or list of tensors.\n",
      " |          mask: Tensor or list of tensors.\n",
      " |      \n",
      " |      # Returns\n",
      " |          None or a tensor (or list of tensors,\n",
      " |              one per output tensor of the layer).\n",
      " |  \n",
      " |  compute_output_shape(self, input_shape)\n",
      " |      Computes the output shape of the layer.\n",
      " |      \n",
      " |      Assumes that the layer will be built\n",
      " |      to match that input shape provided.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          input_shape: Shape tuple (tuple of integers)\n",
      " |              or list of shape tuples (one per output tensor of the layer).\n",
      " |              Shape tuples can include None for free dimensions,\n",
      " |              instead of an integer.\n",
      " |      \n",
      " |      # Returns\n",
      " |          An input shape tuple.\n",
      " |  \n",
      " |  get_config(self)\n",
      " |      Returns the config of the layer.\n",
      " |      \n",
      " |      A layer config is a Python dictionary (serializable)\n",
      " |      containing the configuration of a layer.\n",
      " |      The same layer can be reinstantiated later\n",
      " |      (without its trained weights) from this configuration.\n",
      " |      \n",
      " |      The config of a layer does not include connectivity\n",
      " |      information, nor the layer class name. These are handled\n",
      " |      by `Network` (one layer of abstraction above).\n",
      " |      \n",
      " |      # Returns\n",
      " |          Python dictionary.\n",
      " |  \n",
      " |  get_layer(self, name=None, index=None)\n",
      " |      Retrieves a layer based on either its name (unique) or index.\n",
      " |      \n",
      " |      If `name` and `index` are both provided, `index` will take precedence.\n",
      " |      \n",
      " |      Indices are based on order of horizontal graph traversal (bottom-up).\n",
      " |      \n",
      " |      # Arguments\n",
      " |          name: String, name of layer.\n",
      " |          index: Integer, index of layer.\n",
      " |      \n",
      " |      # Returns\n",
      " |          A layer instance.\n",
      " |      \n",
      " |      # Raises\n",
      " |          ValueError: In case of invalid layer name or index.\n",
      " |  \n",
      " |  get_weights(self)\n",
      " |      Retrieves the weights of the model.\n",
      " |      \n",
      " |      # Returns\n",
      " |          A flat list of Numpy arrays.\n",
      " |  \n",
      " |  load_weights(self, filepath, by_name=False, skip_mismatch=False, reshape=False)\n",
      " |      Loads all layer weights from a HDF5 save file.\n",
      " |      \n",
      " |      If `by_name` is False (default) weights are loaded\n",
      " |      based on the network's topology, meaning the architecture\n",
      " |      should be the same as when the weights were saved.\n",
      " |      Note that layers that don't have weights are not taken\n",
      " |      into account in the topological ordering, so adding or\n",
      " |      removing layers is fine as long as they don't have weights.\n",
      " |      \n",
      " |      If `by_name` is True, weights are loaded into layers\n",
      " |      only if they share the same name. This is useful\n",
      " |      for fine-tuning or transfer-learning models where\n",
      " |      some of the layers have changed.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          filepath: String, path to the weights file to load.\n",
      " |          by_name: Boolean, whether to load weights by name\n",
      " |              or by topological order.\n",
      " |          skip_mismatch: Boolean, whether to skip loading of layers\n",
      " |              where there is a mismatch in the number of weights,\n",
      " |              or a mismatch in the shape of the weight\n",
      " |              (only valid when `by_name`=True).\n",
      " |          reshape: Reshape weights to fit the layer when the correct number\n",
      " |              of weight arrays is present but their shape does not match.\n",
      " |      \n",
      " |      \n",
      " |      # Raises\n",
      " |          ImportError: If h5py is not available.\n",
      " |  \n",
      " |  reset_states(self)\n",
      " |  \n",
      " |  run_internal_graph(self, inputs, masks=None)\n",
      " |      Computes output tensors for new inputs.\n",
      " |      \n",
      " |      # Note:\n",
      " |          - Expects `inputs` to be a list (potentially with 1 element).\n",
      " |          - Can be run on non-Keras tensors.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          inputs: List of tensors\n",
      " |          masks: List of masks (tensors or None).\n",
      " |      \n",
      " |      # Returns\n",
      " |          Three lists: output_tensors, output_masks, output_shapes\n",
      " |  \n",
      " |  save(self, filepath, overwrite=True, include_optimizer=True)\n",
      " |      Saves the model to a single HDF5 file.\n",
      " |      \n",
      " |      The savefile includes:\n",
      " |          - The model architecture, allowing to re-instantiate the model.\n",
      " |          - The model weights.\n",
      " |          - The state of the optimizer, allowing to resume training\n",
      " |              exactly where you left off.\n",
      " |      \n",
      " |      This allows you to save the entirety of the state of a model\n",
      " |      in a single file.\n",
      " |      \n",
      " |      Saved models can be reinstantiated via `keras.models.load_model`.\n",
      " |      The model returned by `load_model`\n",
      " |      is a compiled model ready to be used (unless the saved model\n",
      " |      was never compiled in the first place).\n",
      " |      \n",
      " |      # Arguments\n",
      " |          filepath: String, path to the file to save the weights to.\n",
      " |          overwrite: Whether to silently overwrite any existing file at the\n",
      " |              target location, or provide the user with a manual prompt.\n",
      " |          include_optimizer: If True, save optimizer's state together.\n",
      " |      \n",
      " |      # Example\n",
      " |      \n",
      " |      ```python\n",
      " |      from keras.models import load_model\n",
      " |      \n",
      " |      model.save('my_model.h5')  # creates a HDF5 file 'my_model.h5'\n",
      " |      del model  # deletes the existing model\n",
      " |      \n",
      " |      # returns a compiled model\n",
      " |      # identical to the previous one\n",
      " |      model = load_model('my_model.h5')\n",
      " |      ```\n",
      " |  \n",
      " |  save_weights(self, filepath, overwrite=True)\n",
      " |      Dumps all layer weights to a HDF5 file.\n",
      " |      \n",
      " |      The weight file has:\n",
      " |          - `layer_names` (attribute), a list of strings\n",
      " |              (ordered names of model layers).\n",
      " |          - For every layer, a `group` named `layer.name`\n",
      " |              - For every such layer group, a group attribute `weight_names`,\n",
      " |                  a list of strings\n",
      " |                  (ordered names of weights tensor of the layer).\n",
      " |              - For every weight in the layer, a dataset\n",
      " |                  storing the weight value, named after the weight tensor.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          filepath: String, path to the file to save the weights to.\n",
      " |          overwrite: Whether to silently overwrite any existing file at the\n",
      " |              target location, or provide the user with a manual prompt.\n",
      " |      \n",
      " |      # Raises\n",
      " |          ImportError: If h5py is not available.\n",
      " |  \n",
      " |  set_weights(self, weights)\n",
      " |      Sets the weights of the model.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          weights: A list of Numpy arrays with shapes and types matching\n",
      " |              the output of `model.get_weights()`.\n",
      " |  \n",
      " |  summary(self, line_length=None, positions=None, print_fn=None)\n",
      " |      Prints a string summary of the network.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          line_length: Total length of printed lines\n",
      " |              (e.g. set this to adapt the display to different\n",
      " |              terminal window sizes).\n",
      " |          positions: Relative or absolute positions of log elements\n",
      " |              in each line. If not provided,\n",
      " |              defaults to `[.33, .55, .67, 1.]`.\n",
      " |          print_fn: Print function to use.\n",
      " |              It will be called on each line of the summary.\n",
      " |              You can set it to a custom function\n",
      " |              in order to capture the string summary.\n",
      " |              It defaults to `print` (prints to stdout).\n",
      " |  \n",
      " |  to_json(self, **kwargs)\n",
      " |      Returns a JSON string containing the network configuration.\n",
      " |      \n",
      " |      To load a network from a JSON save file, use\n",
      " |      `keras.models.model_from_json(json_string, custom_objects={})`.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          **kwargs: Additional keyword arguments\n",
      " |              to be passed to `json.dumps()`.\n",
      " |      \n",
      " |      # Returns\n",
      " |          A JSON string.\n",
      " |  \n",
      " |  to_yaml(self, **kwargs)\n",
      " |      Returns a yaml string containing the network configuration.\n",
      " |      \n",
      " |      To load a network from a yaml save file, use\n",
      " |      `keras.models.model_from_yaml(yaml_string, custom_objects={})`.\n",
      " |      \n",
      " |      `custom_objects` should be a dictionary mapping\n",
      " |      the names of custom losses / layers / etc to the corresponding\n",
      " |      functions / classes.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          **kwargs: Additional keyword arguments\n",
      " |              to be passed to `yaml.dump()`.\n",
      " |      \n",
      " |      # Returns\n",
      " |          A YAML string.\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Class methods inherited from keras.engine.network.Network:\n",
      " |  \n",
      " |  from_config(config, custom_objects=None) from builtins.type\n",
      " |      Instantiates a Model from its config (output of `get_config()`).\n",
      " |      \n",
      " |      # Arguments\n",
      " |          config: Model config dictionary.\n",
      " |          custom_objects: Optional dictionary mapping names\n",
      " |              (strings) to custom classes or functions to be\n",
      " |              considered during deserialization.\n",
      " |      \n",
      " |      # Returns\n",
      " |          A model instance.\n",
      " |      \n",
      " |      # Raises\n",
      " |          ValueError: In case of improperly formatted config dict.\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Data descriptors inherited from keras.engine.network.Network:\n",
      " |  \n",
      " |  input_spec\n",
      " |      Gets the model's input specs.\n",
      " |      \n",
      " |      # Returns\n",
      " |          A list of `InputSpec` instances (one per input to the model)\n",
      " |              or a single instance if the model has only one input.\n",
      " |  \n",
      " |  layers\n",
      " |  \n",
      " |  losses\n",
      " |      Retrieves the model's losses.\n",
      " |      \n",
      " |      Will only include losses that are either\n",
      " |      unconditional, or conditional on inputs to this model\n",
      " |      (e.g. will not include losses that depend on tensors\n",
      " |      that aren't inputs to this model).\n",
      " |      \n",
      " |      # Returns\n",
      " |          A list of loss tensors.\n",
      " |  \n",
      " |  non_trainable_weights\n",
      " |  \n",
      " |  state_updates\n",
      " |      Returns the `updates` from all layers that are stateful.\n",
      " |      \n",
      " |      This is useful for separating training updates and\n",
      " |      state updates, e.g. when we need to update a layer's internal state\n",
      " |      during prediction.\n",
      " |      \n",
      " |      # Returns\n",
      " |          A list of update ops.\n",
      " |  \n",
      " |  stateful\n",
      " |  \n",
      " |  trainable_weights\n",
      " |  \n",
      " |  updates\n",
      " |      Retrieves the model's updates.\n",
      " |      \n",
      " |      Will only include updates that are either\n",
      " |      unconditional, or conditional on inputs to this model\n",
      " |      (e.g. will not include updates that depend on tensors\n",
      " |      that aren't inputs to this model).\n",
      " |      \n",
      " |      # Returns\n",
      " |          A list of update ops.\n",
      " |  \n",
      " |  uses_learning_phase\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Methods inherited from keras.engine.base_layer.Layer:\n",
      " |  \n",
      " |  __call__(self, inputs, **kwargs)\n",
      " |      Wrapper around self.call(), for handling internal references.\n",
      " |      \n",
      " |      If a Keras tensor is passed:\n",
      " |          - We call self._add_inbound_node().\n",
      " |          - If necessary, we `build` the layer to match\n",
      " |              the _keras_shape of the input(s).\n",
      " |          - We update the _keras_shape of every input tensor with\n",
      " |              its new shape (obtained via self.compute_output_shape).\n",
      " |              This is done as part of _add_inbound_node().\n",
      " |          - We update the _keras_history of the output tensor(s)\n",
      " |              with the current layer.\n",
      " |              This is done as part of _add_inbound_node().\n",
      " |      \n",
      " |      # Arguments\n",
      " |          inputs: Can be a tensor or list/tuple of tensors.\n",
      " |          **kwargs: Additional keyword arguments to be passed to `call()`.\n",
      " |      \n",
      " |      # Returns\n",
      " |          Output of the layer's `call` method.\n",
      " |      \n",
      " |      # Raises\n",
      " |          ValueError: in case the layer is missing shape information\n",
      " |              for its `build` call.\n",
      " |  \n",
      " |  add_loss(self, losses, inputs=None)\n",
      " |      Adds losses to the layer.\n",
      " |      \n",
      " |      The loss may potentially be conditional on some inputs tensors,\n",
      " |      for instance activity losses are conditional on the layer's inputs.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          losses: loss tensor or list of loss tensors\n",
      " |              to add to the layer.\n",
      " |          inputs: input tensor or list of inputs tensors to mark\n",
      " |              the losses as conditional on these inputs.\n",
      " |              If None is passed, the loss is assumed unconditional\n",
      " |              (e.g. L2 weight regularization, which only depends\n",
      " |              on the layer's weights variables, not on any inputs tensors).\n",
      " |  \n",
      " |  add_update(self, updates, inputs=None)\n",
      " |      Adds updates to the layer.\n",
      " |      \n",
      " |      The updates may potentially be conditional on some inputs tensors,\n",
      " |      for instance batch norm updates are conditional on the layer's inputs.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          updates: update op or list of update ops\n",
      " |              to add to the layer.\n",
      " |          inputs: input tensor or list of inputs tensors to mark\n",
      " |              the updates as conditional on these inputs.\n",
      " |              If None is passed, the updates are assumed unconditional.\n",
      " |  \n",
      " |  add_weight(self, name, shape, dtype=None, initializer=None, regularizer=None, trainable=True, constraint=None)\n",
      " |      Adds a weight variable to the layer.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          name: String, the name for the weight variable.\n",
      " |          shape: The shape tuple of the weight.\n",
      " |          dtype: The dtype of the weight.\n",
      " |          initializer: An Initializer instance (callable).\n",
      " |          regularizer: An optional Regularizer instance.\n",
      " |          trainable: A boolean, whether the weight should\n",
      " |              be trained via backprop or not (assuming\n",
      " |              that the layer itself is also trainable).\n",
      " |          constraint: An optional Constraint instance.\n",
      " |      \n",
      " |      # Returns\n",
      " |          The created weight variable.\n",
      " |  \n",
      " |  assert_input_compatibility(self, inputs)\n",
      " |      Checks compatibility between the layer and provided inputs.\n",
      " |      \n",
      " |      This checks that the tensor(s) `input`\n",
      " |      verify the input assumptions of the layer\n",
      " |      (if any). If not, exceptions are raised.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          inputs: input tensor or list of input tensors.\n",
      " |      \n",
      " |      # Raises\n",
      " |          ValueError: in case of mismatch between\n",
      " |              the provided inputs and the expectations of the layer.\n",
      " |  \n",
      " |  build(self, input_shape)\n",
      " |      Creates the layer weights.\n",
      " |      \n",
      " |      Must be implemented on all layers that have weights.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          input_shape: Keras tensor (future input to layer)\n",
      " |              or list/tuple of Keras tensors to reference\n",
      " |              for weight shape computations.\n",
      " |  \n",
      " |  count_params(self)\n",
      " |      Counts the total number of scalars composing the weights.\n",
      " |      \n",
      " |      # Returns\n",
      " |          An integer count.\n",
      " |      \n",
      " |      # Raises\n",
      " |          RuntimeError: if the layer isn't yet built\n",
      " |              (in which case its weights aren't yet defined).\n",
      " |  \n",
      " |  get_input_at(self, node_index)\n",
      " |      Retrieves the input tensor(s) of a layer at a given node.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          node_index: Integer, index of the node\n",
      " |              from which to retrieve the attribute.\n",
      " |              E.g. `node_index=0` will correspond to the\n",
      " |              first time the layer was called.\n",
      " |      \n",
      " |      # Returns\n",
      " |          A tensor (or list of tensors if the layer has multiple inputs).\n",
      " |  \n",
      " |  get_input_mask_at(self, node_index)\n",
      " |      Retrieves the input mask tensor(s) of a layer at a given node.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          node_index: Integer, index of the node\n",
      " |              from which to retrieve the attribute.\n",
      " |              E.g. `node_index=0` will correspond to the\n",
      " |              first time the layer was called.\n",
      " |      \n",
      " |      # Returns\n",
      " |          A mask tensor\n",
      " |          (or list of tensors if the layer has multiple inputs).\n",
      " |  \n",
      " |  get_input_shape_at(self, node_index)\n",
      " |      Retrieves the input shape(s) of a layer at a given node.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          node_index: Integer, index of the node\n",
      " |              from which to retrieve the attribute.\n",
      " |              E.g. `node_index=0` will correspond to the\n",
      " |              first time the layer was called.\n",
      " |      \n",
      " |      # Returns\n",
      " |          A shape tuple\n",
      " |          (or list of shape tuples if the layer has multiple inputs).\n",
      " |  \n",
      " |  get_losses_for(self, inputs)\n",
      " |  \n",
      " |  get_output_at(self, node_index)\n",
      " |      Retrieves the output tensor(s) of a layer at a given node.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          node_index: Integer, index of the node\n",
      " |              from which to retrieve the attribute.\n",
      " |              E.g. `node_index=0` will correspond to the\n",
      " |              first time the layer was called.\n",
      " |      \n",
      " |      # Returns\n",
      " |          A tensor (or list of tensors if the layer has multiple outputs).\n",
      " |  \n",
      " |  get_output_mask_at(self, node_index)\n",
      " |      Retrieves the output mask tensor(s) of a layer at a given node.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          node_index: Integer, index of the node\n",
      " |              from which to retrieve the attribute.\n",
      " |              E.g. `node_index=0` will correspond to the\n",
      " |              first time the layer was called.\n",
      " |      \n",
      " |      # Returns\n",
      " |          A mask tensor\n",
      " |          (or list of tensors if the layer has multiple outputs).\n",
      " |  \n",
      " |  get_output_shape_at(self, node_index)\n",
      " |      Retrieves the output shape(s) of a layer at a given node.\n",
      " |      \n",
      " |      # Arguments\n",
      " |          node_index: Integer, index of the node\n",
      " |              from which to retrieve the attribute.\n",
      " |              E.g. `node_index=0` will correspond to the\n",
      " |              first time the layer was called.\n",
      " |      \n",
      " |      # Returns\n",
      " |          A shape tuple\n",
      " |          (or list of shape tuples if the layer has multiple outputs).\n",
      " |  \n",
      " |  get_updates_for(self, inputs)\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Data descriptors inherited from keras.engine.base_layer.Layer:\n",
      " |  \n",
      " |  __dict__\n",
      " |      dictionary for instance variables (if defined)\n",
      " |  \n",
      " |  __weakref__\n",
      " |      list of weak references to the object (if defined)\n",
      " |  \n",
      " |  built\n",
      " |  \n",
      " |  input\n",
      " |      Retrieves the input tensor(s) of a layer.\n",
      " |      \n",
      " |      Only applicable if the layer has exactly one inbound node,\n",
      " |      i.e. if it is connected to one incoming layer.\n",
      " |      \n",
      " |      # Returns\n",
      " |          Input tensor or list of input tensors.\n",
      " |      \n",
      " |      # Raises\n",
      " |          AttributeError: if the layer is connected to\n",
      " |          more than one incoming layers.\n",
      " |  \n",
      " |  input_mask\n",
      " |      Retrieves the input mask tensor(s) of a layer.\n",
      " |      \n",
      " |      Only applicable if the layer has exactly one inbound node,\n",
      " |      i.e. if it is connected to one incoming layer.\n",
      " |      \n",
      " |      # Returns\n",
      " |          Input mask tensor (potentially None) or list of input\n",
      " |          mask tensors.\n",
      " |      \n",
      " |      # Raises\n",
      " |          AttributeError: if the layer is connected to\n",
      " |          more than one incoming layers.\n",
      " |  \n",
      " |  input_shape\n",
      " |      Retrieves the input shape tuple(s) of a layer.\n",
      " |      \n",
      " |      Only applicable if the layer has exactly one inbound node,\n",
      " |      i.e. if it is connected to one incoming layer.\n",
      " |      \n",
      " |      # Returns\n",
      " |          Input shape tuple\n",
      " |          (or list of input shape tuples, one tuple per input tensor).\n",
      " |      \n",
      " |      # Raises\n",
      " |          AttributeError: if the layer is connected to\n",
      " |          more than one incoming layers.\n",
      " |  \n",
      " |  output\n",
      " |      Retrieves the output tensor(s) of a layer.\n",
      " |      \n",
      " |      Only applicable if the layer has exactly one inbound node,\n",
      " |      i.e. if it is connected to one incoming layer.\n",
      " |      \n",
      " |      # Returns\n",
      " |          Output tensor or list of output tensors.\n",
      " |      \n",
      " |      # Raises\n",
      " |          AttributeError: if the layer is connected to\n",
      " |          more than one incoming layers.\n",
      " |  \n",
      " |  output_mask\n",
      " |      Retrieves the output mask tensor(s) of a layer.\n",
      " |      \n",
      " |      Only applicable if the layer has exactly one inbound node,\n",
      " |      i.e. if it is connected to one incoming layer.\n",
      " |      \n",
      " |      # Returns\n",
      " |          Output mask tensor (potentially None) or list of output\n",
      " |          mask tensors.\n",
      " |      \n",
      " |      # Raises\n",
      " |          AttributeError: if the layer is connected to\n",
      " |          more than one incoming layers.\n",
      " |  \n",
      " |  output_shape\n",
      " |      Retrieves the output shape tuple(s) of a layer.\n",
      " |      \n",
      " |      Only applicable if the layer has one inbound node,\n",
      " |      or if all inbound nodes have the same output shape.\n",
      " |      \n",
      " |      # Returns\n",
      " |          Output shape tuple\n",
      " |          (or list of input shape tuples, one tuple per output tensor).\n",
      " |      \n",
      " |      # Raises\n",
      " |          AttributeError: if the layer is connected to\n",
      " |          more than one incoming layers.\n",
      " |  \n",
      " |  weights\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/udir/gwang/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:96: UserWarning: Update your `Model` call to the Keras 2 API: `Model(inputs=Tensor(\"in..., outputs=Tensor(\"co...)`\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ISIC_0012852.jpg\n",
      "ISIC_0010570.jpg\n",
      "ISIC_0014735.jpg\n",
      "ISIC_0010461.jpg\n",
      "ISIC_0012187.jpg\n",
      "ISIC_0013663.jpg\n",
      "ISIC_0009504.jpg\n",
      "ISIC_0000384.jpg\n",
      "ISIC_0010587.jpg\n",
      "ISIC_0014308.jpg\n",
      "ISIC_0012257.jpg\n",
      "ISIC_0013670.jpg\n",
      "ISIC_0015980.jpg\n",
      "ISIC_0010089.jpg\n",
      "ISIC_0006776.jpg\n",
      "ISIC_0010010.jpg\n",
      "ISIC_0015153.jpg\n",
      "ISIC_0015955.jpg\n",
      "ISIC_0011292.jpg\n",
      "ISIC_0013048.jpg\n",
      "ISIC_0009910.jpg\n",
      "ISIC_0016051.jpg\n",
      "ISIC_0014395.jpg\n",
      "ISIC_0011317.jpg\n",
      "ISIC_0014635.jpg\n",
      "ISIC_0006350.jpg\n",
      "ISIC_0011347.jpg\n",
      "ISIC_0013908.jpg\n",
      "ISIC_0014625.jpg\n",
      "ISIC_0000457.jpg\n",
      "ISIC_0013982.jpg\n",
      "ISIC_0013493.jpg\n",
      "ISIC_0010047.jpg\n",
      "ISIC_0013736.jpg\n",
      "ISIC_0000524.jpg\n",
      "ISIC_0011327.jpg\n",
      "ISIC_0015276.jpg\n",
      "ISIC_0013925.jpg\n",
      "ISIC_0014957.jpg\n",
      "ISIC_0015526.jpg\n",
      "ISIC_0013738.jpg\n",
      "ISIC_0000494.jpg\n",
      "ISIC_0000488.jpg\n",
      "ISIC_0012836.jpg\n",
      "ISIC_0015440.jpg\n",
      "ISIC_0014961.jpg\n",
      "ISIC_0001247.jpg\n",
      "ISIC_0000537.jpg\n",
      "ISIC_0000326.jpg\n",
      "ISIC_0012901.jpg\n",
      "ISIC_0014422.jpg\n",
      "ISIC_0000208.jpg\n",
      "ISIC_0000105.jpg\n",
      "ISIC_0012285.jpg\n",
      "ISIC_0015997.jpg\n",
      "ISIC_0014863.jpg\n",
      "ISIC_0013226.jpg\n",
      "ISIC_0010028.jpg\n",
      "ISIC_0000037.jpg\n",
      "ISIC_0014829.jpg\n",
      "ISIC_0000189.jpg\n",
      "ISIC_0015212.jpg\n",
      "ISIC_0011304.jpg\n",
      "ISIC_0013637.jpg\n",
      "ISIC_0013203.jpg\n",
      "ISIC_0014324.jpg\n",
      "ISIC_0012260.jpg\n",
      "ISIC_0000530.jpg\n",
      "ISIC_0014619.jpg\n",
      "ISIC_0013558.jpg\n",
      "ISIC_0000322.jpg\n",
      "ISIC_0000138.jpg\n",
      "ISIC_0010457.jpg\n",
      "ISIC_0013961.jpg\n",
      "ISIC_0015631.jpg\n",
      "ISIC_0015401.jpg\n",
      "ISIC_0014478.jpg\n",
      "ISIC_0012109.jpg\n",
      "ISIC_0013399.jpg\n",
      "ISIC_0001204.jpg\n",
      "ISIC_0010598.jpg\n",
      "ISIC_0010320.jpg\n",
      "ISIC_0013032.jpg\n",
      "ISIC_0010041.jpg\n",
      "ISIC_0000361.jpg\n",
      "ISIC_0012810.jpg\n",
      "ISIC_0016027.jpg\n",
      "ISIC_0000552.jpg\n",
      "ISIC_0010022.jpg\n",
      "ISIC_0014720.jpg\n",
      "ISIC_0015171.jpg\n",
      "ISIC_0012699.jpg\n",
      "ISIC_0012945.jpg\n",
      "ISIC_0015443.jpg\n",
      "ISIC_0015395.jpg\n",
      "ISIC_0000341.jpg\n",
      "ISIC_0013191.jpg\n",
      "ISIC_0014780.jpg\n",
      "ISIC_0012653.jpg\n",
      "ISIC_0004168.jpg\n",
      "ISIC_0013045.jpg\n",
      "ISIC_0000223.jpg\n",
      "ISIC_0015163.jpg\n",
      "ISIC_0012213.jpg\n",
      "ISIC_0010488.jpg\n",
      "ISIC_0013223.jpg\n",
      "ISIC_0012678.jpg\n",
      "ISIC_0013427.jpg\n",
      "ISIC_0009955.jpg\n",
      "ISIC_0009934.jpg\n",
      "ISIC_0009974.jpg\n",
      "ISIC_0010086.jpg\n",
      "ISIC_0013972.jpg\n",
      "ISIC_0013395.jpg\n",
      "ISIC_0000314.jpg\n",
      "ISIC_0000275.jpg\n",
      "ISIC_0014249.jpg\n",
      "ISIC_0010090.jpg\n",
      "ISIC_0013777.jpg\n",
      "ISIC_0000316.jpg\n",
      "ISIC_0008626.jpg\n",
      "ISIC_0013688.jpg\n",
      "ISIC_0012095.jpg\n",
      "ISIC_0010476.jpg\n",
      "ISIC_0009929.jpg\n",
      "ISIC_0014511.jpg\n",
      "ISIC_0000999.jpg\n",
      "ISIC_0014769.jpg\n",
      "ISIC_0000226.jpg\n",
      "ISIC_0005247.jpg\n",
      "ISIC_0005548.jpg\n",
      "ISIC_0010018.jpg\n",
      "ISIC_0013554.jpg\n",
      "ISIC_0000188.jpg\n",
      "ISIC_0012314.jpg\n",
      "ISIC_0015973.jpg\n",
      "ISIC_0000145.jpg\n",
      "ISIC_0012320.jpg\n",
      "ISIC_0012744.jpg\n",
      "ISIC_0000042.jpg\n",
      "ISIC_0014583.jpg\n",
      "ISIC_0014044.jpg\n",
      "ISIC_0000043.jpg\n",
      "ISIC_0009564.jpg\n",
      "ISIC_0014574.jpg\n",
      "ISIC_0011207.jpg\n",
      "ISIC_0015005.jpg\n",
      "ISIC_0010062.jpg\n",
      "ISIC_0009904.jpg\n",
      "ISIC_0014585.jpg\n",
      "ISIC_0015232.jpg\n",
      "ISIC_0009909.jpg\n",
      "ISIC_0010176.jpg\n",
      "ISIC_0013996.jpg\n",
      "ISIC_0000071.jpg\n",
      "ISIC_0000395.jpg\n",
      "ISIC_0014628.jpg\n",
      "ISIC_0015991.jpg\n",
      "ISIC_0014640.jpg\n",
      "ISIC_0000127.jpg\n",
      "ISIC_0011084.jpg\n",
      "ISIC_0016004.jpg\n",
      "ISIC_0013888.jpg\n",
      "ISIC_0013181.jpg\n",
      "ISIC_0009298.jpg\n",
      "ISIC_0014716.jpg\n",
      "ISIC_0013789.jpg\n",
      "ISIC_0000882.jpg\n",
      "ISIC_0009942.jpg\n",
      "ISIC_0013749.jpg\n",
      "ISIC_0010073.jpg\n",
      "ISIC_0012756.jpg\n",
      "ISIC_0015019.jpg\n",
      "ISIC_0000089.jpg\n",
      "ISIC_0014506.jpg\n",
      "ISIC_0010851.jpg\n",
      "ISIC_0001367.jpg\n",
      "ISIC_0014609.jpg\n",
      "ISIC_0008807.jpg\n",
      "ISIC_0000253.jpg\n",
      "ISIC_0013579.jpg\n",
      "ISIC_0000206.jpg\n",
      "ISIC_0014685.jpg\n",
      "ISIC_0016061.jpg\n",
      "ISIC_0009914.jpg\n",
      "ISIC_0014912.jpg\n",
      "ISIC_0009966.jpg\n",
      "ISIC_0001213.jpg\n",
      "ISIC_0013696.jpg\n",
      "ISIC_0009877.jpg\n",
      "ISIC_0009936.jpg\n",
      "ISIC_0000330.jpg\n",
      "ISIC_0015999.jpg\n",
      "ISIC_0010554.jpg\n",
      "ISIC_0015311.jpg\n",
      "ISIC_0000555.jpg\n",
      "ISIC_0000242.jpg\n",
      "ISIC_0014576.jpg\n",
      "ISIC_0013159.jpg\n",
      "ISIC_0015256.jpg\n",
      "ISIC_0010077.jpg\n",
      "ISIC_0001184.jpg\n",
      "ISIC_0000535.jpg\n",
      "ISIC_0014835.jpg\n",
      "ISIC_0011362.jpg\n",
      "ISIC_0014687.jpg\n",
      "ISIC_0010059.jpg\n",
      "ISIC_0010262.jpg\n",
      "ISIC_0000448.jpg\n",
      "ISIC_0011218.jpg\n",
      "ISIC_0009901.jpg\n",
      "ISIC_0012758.jpg\n",
      "ISIC_0011155.jpg\n",
      "ISIC_0001152.jpg\n",
      "ISIC_0012425.jpg\n",
      "ISIC_0012246.jpg\n",
      "ISIC_0013193.jpg\n",
      "ISIC_0001296.jpg\n",
      "ISIC_0001134.jpg\n",
      "ISIC_0000201.jpg\n",
      "ISIC_0010017.jpg\n",
      "ISIC_0009964.jpg\n",
      "ISIC_0010590.jpg\n",
      "ISIC_0015418.jpg\n",
      "ISIC_0014486.jpg\n",
      "ISIC_0001769.jpg\n",
      "ISIC_0013213.jpg\n",
      "ISIC_0014372.jpg\n",
      "ISIC_0012715.jpg\n",
      "ISIC_0015645.jpg\n",
      "ISIC_0014441.jpg\n",
      "ISIC_0011357.jpg\n",
      "ISIC_0014722.jpg\n",
      "ISIC_0016037.jpg\n",
      "ISIC_0014397.jpg\n",
      "ISIC_0012549.jpg\n",
      "ISIC_0014779.jpg\n",
      "ISIC_0000413.jpg\n",
      "ISIC_0000217.jpg\n",
      "ISIC_0013523.jpg\n",
      "ISIC_0014868.jpg\n",
      "ISIC_0012789.jpg\n",
      "ISIC_0012282.jpg\n",
      "ISIC_0012245.jpg\n",
      "ISIC_0010184.jpg\n",
      "ISIC_0013319.jpg\n",
      "ISIC_0012713.jpg\n",
      "ISIC_0010064.jpg\n",
      "ISIC_0012701.jpg\n",
      "ISIC_0000499.jpg\n",
      "ISIC_0012889.jpg\n",
      "ISIC_0015950.jpg\n",
      "ISIC_0012520.jpg\n",
      "ISIC_0015136.jpg\n",
      "ISIC_0010360.jpg\n",
      "ISIC_0001131.jpg\n",
      "ISIC_0011104.jpg\n",
      "ISIC_0011132.jpg\n",
      "ISIC_0013844.jpg\n",
      "ISIC_0014163.jpg\n",
      "ISIC_0013035.jpg\n",
      "ISIC_0009078.jpg\n",
      "ISIC_0012092.jpg\n",
      "ISIC_0015208.jpg\n",
      "ISIC_0012969.jpg\n",
      "ISIC_0013287.jpg\n",
      "ISIC_0014393.jpg\n",
      "ISIC_0016016.jpg\n",
      "ISIC_0015009.jpg\n",
      "ISIC_0015184.jpg\n",
      "ISIC_0012981.jpg\n",
      "ISIC_0015173.jpg\n",
      "ISIC_0012391.jpg\n",
      "ISIC_0012448.jpg\n",
      "ISIC_0014947.jpg\n",
      "ISIC_0009945.jpg\n",
      "ISIC_0010182.jpg\n",
      "ISIC_0014032.jpg\n",
      "ISIC_0000149.jpg\n",
      "ISIC_0012099.jpg\n",
      "ISIC_0000209.jpg\n",
      "ISIC_0015245.jpg\n",
      "ISIC_0004715.jpg\n",
      "ISIC_0016035.jpg\n",
      "ISIC_0011118.jpg\n",
      "ISIC_0008992.jpg\n",
      "ISIC_0000319.jpg\n",
      "ISIC_0011167.jpg\n",
      "ISIC_0001119.jpg\n",
      "ISIC_0014541.jpg\n",
      "ISIC_0013998.jpg\n",
      "ISIC_0000425.jpg\n",
      "ISIC_0000518.jpg\n",
      "ISIC_0009915.jpg\n",
      "ISIC_0013335.jpg\n",
      "ISIC_0013490.jpg\n",
      "ISIC_0012357.jpg\n",
      "ISIC_0000027.jpg\n",
      "ISIC_0013494.jpg\n",
      "ISIC_0010173.jpg\n",
      "ISIC_0013364.jpg\n",
      "ISIC_0000023.jpg\n",
      "ISIC_0016060.jpg\n",
      "ISIC_0013690.jpg\n",
      "ISIC_0001449.jpg\n",
      "ISIC_0012086.jpg\n",
      "ISIC_0014694.jpg\n",
      "ISIC_0014715.jpg\n",
      "ISIC_0013474.jpg\n",
      "ISIC_0000016.jpg\n",
      "ISIC_0014748.jpg\n",
      "ISIC_0000245.jpg\n",
      "ISIC_0011109.jpg\n",
      "ISIC_0011129.jpg\n",
      "ISIC_0013615.jpg\n",
      "ISIC_0014651.jpg\n",
      "ISIC_0013271.jpg\n",
      "ISIC_0011326.jpg\n",
      "ISIC_0008256.jpg\n",
      "ISIC_0010042.jpg\n",
      "ISIC_0000202.jpg\n",
      "ISIC_0013288.jpg\n",
      "ISIC_0012325.jpg\n",
      "ISIC_0000234.jpg\n",
      "ISIC_0012660.jpg\n",
      "ISIC_0000264.jpg\n",
      "ISIC_0014929.jpg\n",
      "ISIC_0000123.jpg\n",
      "ISIC_0014765.jpg\n",
      "ISIC_0009860.jpg\n",
      "ISIC_0014745.jpg\n",
      "ISIC_0008600.jpg\n",
      "ISIC_0014994.jpg\n",
      "ISIC_0007788.jpg\n",
      "ISIC_0000019.jpg\n",
      "ISIC_0013321.jpg\n",
      "ISIC_0016012.jpg\n",
      "ISIC_0011385.jpg\n",
      "ISIC_0014772.jpg\n",
      "ISIC_0010380.jpg\n",
      "ISIC_0013134.jpg\n",
      "ISIC_0000192.jpg\n",
      "ISIC_0014771.jpg\n",
      "ISIC_0013863.jpg\n",
      "ISIC_0014833.jpg\n",
      "ISIC_0014783.jpg\n",
      "ISIC_0000120.jpg\n",
      "ISIC_0008998.jpg\n",
      "ISIC_0010364.jpg\n",
      "ISIC_0009583.jpg\n",
      "ISIC_0014987.jpg\n",
      "ISIC_0000474.jpg\n",
      "ISIC_0015218.jpg\n",
      "ISIC_0014903.jpg\n",
      "ISIC_0001427.jpg\n",
      "ISIC_0015002.jpg\n",
      "ISIC_0000383.jpg\n",
      "ISIC_0013304.jpg\n",
      "ISIC_0014942.jpg\n",
      "ISIC_0010252.jpg\n",
      "ISIC_0010327.jpg\n",
      "ISIC_0011137.jpg\n",
      "ISIC_0012334.jpg\n",
      "ISIC_0012665.jpg\n",
      "ISIC_0011085.jpg\n",
      "ISIC_0014762.jpg\n",
      "ISIC_0014928.jpg\n",
      "ISIC_0000098.jpg\n",
      "ISIC_0012666.jpg\n",
      "ISIC_0000009.jpg\n",
      "ISIC_0000504.jpg\n",
      "ISIC_0000247.jpg\n",
      "ISIC_0014092.jpg\n",
      "ISIC_0014336.jpg\n",
      "ISIC_0011114.jpg\n",
      "ISIC_0011131.jpg\n",
      "ISIC_0000299.jpg\n",
      "ISIC_0012746.jpg\n",
      "ISIC_0000092.jpg\n",
      "ISIC_0010232.jpg\n",
      "ISIC_0015476.jpg\n",
      "ISIC_0010019.jpg\n",
      "ISIC_0007141.jpg\n",
      "ISIC_0007322.jpg\n",
      "ISIC_0012806.jpg\n",
      "ISIC_0010862.jpg\n",
      "ISIC_0013567.jpg\n",
      "ISIC_0012447.jpg\n",
      "ISIC_0010337.jpg\n",
      "ISIC_0000032.jpg\n",
      "ISIC_0000151.jpg\n",
      "ISIC_0013472.jpg\n",
      "ISIC_0000470.jpg\n",
      "ISIC_0010465.jpg\n",
      "ISIC_0013516.jpg\n",
      "ISIC_0012494.jpg\n",
      "ISIC_0000546.jpg\n",
      "ISIC_0013212.jpg\n",
      "ISIC_0000134.jpg\n",
      "ISIC_0000197.jpg\n",
      "ISIC_0000556.jpg\n",
      "ISIC_0015357.jpg\n",
      "ISIC_0014725.jpg\n",
      "ISIC_0001372.jpg\n",
      "ISIC_0013027.jpg\n",
      "ISIC_0015969.jpg\n",
      "ISIC_0000292.jpg\n",
      "ISIC_0014502.jpg\n",
      "ISIC_0012898.jpg\n",
      "ISIC_0003462.jpg\n",
      "ISIC_0000013.jpg\n",
      "ISIC_0012369.jpg\n",
      "ISIC_0013096.jpg\n",
      "ISIC_0014753.jpg\n",
      "ISIC_0014798.jpg\n",
      "ISIC_0014603.jpg\n",
      "ISIC_0000323.jpg\n",
      "ISIC_0015481.jpg\n",
      "ISIC_0002438.jpg\n",
      "ISIC_0014643.jpg\n",
      "ISIC_0010332.jpg\n",
      "ISIC_0013897.jpg\n",
      "ISIC_0000230.jpg\n",
      "ISIC_0011117.jpg\n",
      "ISIC_0000508.jpg\n",
      "ISIC_0000055.jpg\n",
      "ISIC_0015018.jpg\n",
      "ISIC_0015985.jpg\n",
      "ISIC_0013796.jpg\n",
      "ISIC_0012177.jpg\n",
      "ISIC_0012523.jpg\n",
      "ISIC_0010005.jpg\n",
      "ISIC_0012876.jpg\n",
      "ISIC_0013639.jpg\n",
      "ISIC_0000444.jpg\n",
      "ISIC_0013691.jpg\n",
      "ISIC_0013311.jpg\n",
      "ISIC_0012313.jpg\n",
      "ISIC_0014800.jpg\n",
      "ISIC_0015219.jpg\n",
      "ISIC_0014974.jpg\n",
      "ISIC_0010044.jpg\n",
      "ISIC_0010492.jpg\n",
      "ISIC_0015044.jpg\n",
      "ISIC_0012720.jpg\n",
      "ISIC_0010036.jpg\n",
      "ISIC_0013369.jpg\n",
      "ISIC_0013291.jpg\n",
      "ISIC_0000503.jpg\n",
      "ISIC_0010350.jpg\n",
      "ISIC_0010557.jpg\n",
      "ISIC_0010487.jpg\n",
      "ISIC_0012904.jpg\n",
      "ISIC_0010858.jpg\n",
      "ISIC_0013617.jpg\n",
      "ISIC_0011158.jpg\n",
      "ISIC_0002206.jpg\n",
      "ISIC_0000182.jpg\n",
      "ISIC_0011296.jpg\n",
      "ISIC_0013721.jpg\n",
      "ISIC_0000087.jpg\n",
      "ISIC_0007332.jpg\n",
      "ISIC_0009941.jpg\n",
      "ISIC_0010213.jpg\n",
      "ISIC_0000353.jpg\n",
      "ISIC_0014327.jpg\n",
      "ISIC_0000215.jpg\n",
      "ISIC_0013244.jpg\n",
      "ISIC_0015279.jpg\n",
      "ISIC_0013842.jpg\n",
      "ISIC_0011159.jpg\n",
      "ISIC_0013600.jpg\n",
      "ISIC_0014702.jpg\n",
      "ISIC_0000268.jpg\n",
      "ISIC_0010244.jpg\n",
      "ISIC_0000339.jpg\n",
      "ISIC_0013109.jpg\n",
      "ISIC_0010596.jpg\n",
      "ISIC_0010102.jpg\n",
      "ISIC_0013089.jpg\n",
      "ISIC_0013356.jpg\n",
      "ISIC_0011130.jpg\n",
      "ISIC_0014195.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ISIC_0008116.jpg\n",
      "ISIC_0013082.jpg\n",
      "ISIC_0014049.jpg\n",
      "ISIC_0012155.jpg\n",
      "ISIC_0010848.jpg\n",
      "ISIC_0013580.jpg\n",
      "ISIC_0015133.jpg\n",
      "ISIC_0012891.jpg\n",
      "ISIC_0013094.jpg\n",
      "ISIC_0011202.jpg\n",
      "ISIC_0013075.jpg\n",
      "ISIC_0015566.jpg\n",
      "ISIC_0000203.jpg\n",
      "ISIC_0016022.jpg\n",
      "ISIC_0012690.jpg\n",
      "ISIC_0014558.jpg\n",
      "ISIC_0013488.jpg\n",
      "ISIC_0013799.jpg\n",
      "ISIC_0000249.jpg\n",
      "ISIC_0014110.jpg\n",
      "ISIC_0013216.jpg\n",
      "ISIC_0014726.jpg\n",
      "ISIC_0015455.jpg\n",
      "ISIC_0014171.jpg\n",
      "ISIC_0010568.jpg\n",
      "ISIC_0015040.jpg\n",
      "ISIC_0013865.jpg\n",
      "ISIC_0015118.jpg\n",
      "ISIC_0015157.jpg\n",
      "ISIC_0014740.jpg\n",
      "ISIC_0011324.jpg\n",
      "ISIC_0010592.jpg\n",
      "ISIC_0014696.jpg\n",
      "ISIC_0010480.jpg\n",
      "ISIC_0012118.jpg\n",
      "ISIC_0012379.jpg\n",
      "ISIC_0012228.jpg\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "file_names = next(os.walk(test_data_dir))[2]\n",
    "\n",
    "model = AttentionUnetModel()\n",
    "model.load_weights(model_localtion)\n",
    "\n",
    "\n",
    "for file in file_names:\n",
    "    print(file)\n",
    "    grey_img = load_img(os.path.join(test_data_dir,file), target_size=(img_rows, img_cols), grayscale=False)\n",
    "    img = img_to_array(grey_img)\n",
    "    mean = np.mean(img)  # mean for data centering\n",
    "    std = np.std(img)  # std for data normalization\n",
    "    img -= mean\n",
    "    img /= std\n",
    "    img = np.reshape(img,(1,)+img.shape)\n",
    "    results = model.predict(img)\n",
    "\n",
    "    result_img = array_to_img(results[0] * 255 )\n",
    "    plt.imshow(result_img)\n",
    "    result_img.save(os.path.join(test_data_pred_dir, file.split('.')[0] + '_predict.jpg'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_6 (InputLayer)            (None, 256, 256, 3)  0                                            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_136 (Conv2D)             (None, 256, 256, 32) 896         input_6[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_131 (LeakyReLU)     (None, 256, 256, 32) 0           conv2d_136[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_137 (Conv2D)             (None, 256, 256, 32) 9248        leaky_re_lu_131[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_132 (LeakyReLU)     (None, 256, 256, 32) 0           conv2d_137[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_31 (MaxPooling2D) (None, 128, 128, 32) 0           leaky_re_lu_132[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_138 (Conv2D)             (None, 128, 128, 64) 18496       max_pooling2d_31[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_133 (LeakyReLU)     (None, 128, 128, 64) 0           conv2d_138[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_139 (Conv2D)             (None, 128, 128, 64) 36928       leaky_re_lu_133[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_134 (LeakyReLU)     (None, 128, 128, 64) 0           conv2d_139[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_32 (MaxPooling2D) (None, 64, 64, 64)   0           leaky_re_lu_134[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_140 (Conv2D)             (None, 64, 64, 128)  73856       max_pooling2d_32[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_135 (LeakyReLU)     (None, 64, 64, 128)  0           conv2d_140[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_141 (Conv2D)             (None, 64, 64, 128)  147584      leaky_re_lu_135[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_136 (LeakyReLU)     (None, 64, 64, 128)  0           conv2d_141[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_33 (MaxPooling2D) (None, 32, 32, 128)  0           leaky_re_lu_136[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_142 (Conv2D)             (None, 32, 32, 256)  295168      max_pooling2d_33[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_137 (LeakyReLU)     (None, 32, 32, 256)  0           conv2d_142[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_143 (Conv2D)             (None, 32, 32, 256)  590080      leaky_re_lu_137[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_138 (LeakyReLU)     (None, 32, 32, 256)  0           conv2d_143[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_34 (MaxPooling2D) (None, 16, 16, 256)  0           leaky_re_lu_138[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_144 (Conv2D)             (None, 16, 16, 512)  1180160     max_pooling2d_34[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_139 (LeakyReLU)     (None, 16, 16, 512)  0           conv2d_144[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_145 (Conv2D)             (None, 16, 16, 512)  2359808     leaky_re_lu_139[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_140 (LeakyReLU)     (None, 16, 16, 512)  0           conv2d_145[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_35 (MaxPooling2D) (None, 8, 8, 512)    0           leaky_re_lu_140[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_146 (Conv2D)             (None, 8, 8, 1024)   4719616     max_pooling2d_35[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_141 (LeakyReLU)     (None, 8, 8, 1024)   0           conv2d_146[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_147 (Conv2D)             (None, 8, 8, 1024)   9438208     leaky_re_lu_141[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_142 (LeakyReLU)     (None, 8, 8, 1024)   0           conv2d_147[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_36 (MaxPooling2D) (None, 4, 4, 1024)   0           leaky_re_lu_142[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_148 (Conv2D)             (None, 4, 4, 2048)   18876416    max_pooling2d_36[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_143 (LeakyReLU)     (None, 4, 4, 2048)   0           conv2d_148[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_149 (Conv2D)             (None, 4, 4, 2048)   37750784    leaky_re_lu_143[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_144 (LeakyReLU)     (None, 4, 4, 2048)   0           conv2d_149[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "up_sampling2d_31 (UpSampling2D) (None, 8, 8, 2048)   0           leaky_re_lu_144[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att6skip_conv (Conv2D)          (None, 8, 8, 1024)   1049600     leaky_re_lu_142[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att6direct_conv (Conv2D)        (None, 8, 8, 1024)   2098176     up_sampling2d_31[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "add_31 (Add)                    (None, 8, 8, 1024)   0           att6skip_conv[0][0]              \n",
      "                                                                 att6direct_conv[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att6_relu (LeakyReLU)           (None, 8, 8, 1024)   0           add_31[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "att6_att (Conv2D)               (None, 8, 8, 1)      1025        att6_relu[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "multiply_31 (Multiply)          (None, 8, 8, 1024)   0           leaky_re_lu_142[0][0]            \n",
      "                                                                 att6_att[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_31 (Concatenate)    (None, 8, 8, 3072)   0           multiply_31[0][0]                \n",
      "                                                                 up_sampling2d_31[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_150 (Conv2D)             (None, 8, 8, 1024)   28312576    concatenate_31[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_145 (LeakyReLU)     (None, 8, 8, 1024)   0           conv2d_150[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_151 (Conv2D)             (None, 8, 8, 1024)   9438208     leaky_re_lu_145[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_146 (LeakyReLU)     (None, 8, 8, 1024)   0           conv2d_151[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "up_sampling2d_32 (UpSampling2D) (None, 16, 16, 1024) 0           leaky_re_lu_146[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att5skip_conv (Conv2D)          (None, 16, 16, 512)  262656      leaky_re_lu_140[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att5direct_conv (Conv2D)        (None, 16, 16, 512)  524800      up_sampling2d_32[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "add_32 (Add)                    (None, 16, 16, 512)  0           att5skip_conv[0][0]              \n",
      "                                                                 att5direct_conv[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att5_relu (LeakyReLU)           (None, 16, 16, 512)  0           add_32[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "att5_att (Conv2D)               (None, 16, 16, 1)    513         att5_relu[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "multiply_32 (Multiply)          (None, 16, 16, 512)  0           leaky_re_lu_140[0][0]            \n",
      "                                                                 att5_att[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_32 (Concatenate)    (None, 16, 16, 1536) 0           multiply_32[0][0]                \n",
      "                                                                 up_sampling2d_32[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_152 (Conv2D)             (None, 16, 16, 512)  7078400     concatenate_32[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_147 (LeakyReLU)     (None, 16, 16, 512)  0           conv2d_152[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_153 (Conv2D)             (None, 16, 16, 512)  2359808     leaky_re_lu_147[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_148 (LeakyReLU)     (None, 16, 16, 512)  0           conv2d_153[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "up_sampling2d_33 (UpSampling2D) (None, 32, 32, 512)  0           leaky_re_lu_148[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att4skip_conv (Conv2D)          (None, 32, 32, 256)  65792       leaky_re_lu_138[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att4direct_conv (Conv2D)        (None, 32, 32, 256)  131328      up_sampling2d_33[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "add_33 (Add)                    (None, 32, 32, 256)  0           att4skip_conv[0][0]              \n",
      "                                                                 att4direct_conv[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att4_relu (LeakyReLU)           (None, 32, 32, 256)  0           add_33[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "att4_att (Conv2D)               (None, 32, 32, 1)    257         att4_relu[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "multiply_33 (Multiply)          (None, 32, 32, 256)  0           leaky_re_lu_138[0][0]            \n",
      "                                                                 att4_att[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_33 (Concatenate)    (None, 32, 32, 768)  0           multiply_33[0][0]                \n",
      "                                                                 up_sampling2d_33[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_154 (Conv2D)             (None, 32, 32, 256)  1769728     concatenate_33[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_149 (LeakyReLU)     (None, 32, 32, 256)  0           conv2d_154[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_155 (Conv2D)             (None, 32, 32, 256)  590080      leaky_re_lu_149[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_150 (LeakyReLU)     (None, 32, 32, 256)  0           conv2d_155[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "up_sampling2d_34 (UpSampling2D) (None, 64, 64, 256)  0           leaky_re_lu_150[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att3skip_conv (Conv2D)          (None, 64, 64, 128)  16512       leaky_re_lu_136[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att3direct_conv (Conv2D)        (None, 64, 64, 128)  32896       up_sampling2d_34[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "add_34 (Add)                    (None, 64, 64, 128)  0           att3skip_conv[0][0]              \n",
      "                                                                 att3direct_conv[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att3_relu (LeakyReLU)           (None, 64, 64, 128)  0           add_34[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "att3_att (Conv2D)               (None, 64, 64, 1)    129         att3_relu[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "multiply_34 (Multiply)          (None, 64, 64, 128)  0           leaky_re_lu_136[0][0]            \n",
      "                                                                 att3_att[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_34 (Concatenate)    (None, 64, 64, 384)  0           multiply_34[0][0]                \n",
      "                                                                 up_sampling2d_34[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_156 (Conv2D)             (None, 64, 64, 128)  442496      concatenate_34[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_151 (LeakyReLU)     (None, 64, 64, 128)  0           conv2d_156[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_157 (Conv2D)             (None, 64, 64, 128)  147584      leaky_re_lu_151[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_152 (LeakyReLU)     (None, 64, 64, 128)  0           conv2d_157[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "up_sampling2d_35 (UpSampling2D) (None, 128, 128, 128 0           leaky_re_lu_152[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att2skip_conv (Conv2D)          (None, 128, 128, 64) 4160        leaky_re_lu_134[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att2direct_conv (Conv2D)        (None, 128, 128, 64) 8256        up_sampling2d_35[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "add_35 (Add)                    (None, 128, 128, 64) 0           att2skip_conv[0][0]              \n",
      "                                                                 att2direct_conv[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att2_relu (LeakyReLU)           (None, 128, 128, 64) 0           add_35[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "att2_att (Conv2D)               (None, 128, 128, 1)  65          att2_relu[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "multiply_35 (Multiply)          (None, 128, 128, 64) 0           leaky_re_lu_134[0][0]            \n",
      "                                                                 att2_att[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_35 (Concatenate)    (None, 128, 128, 192 0           multiply_35[0][0]                \n",
      "                                                                 up_sampling2d_35[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_158 (Conv2D)             (None, 128, 128, 64) 110656      concatenate_35[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_153 (LeakyReLU)     (None, 128, 128, 64) 0           conv2d_158[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_159 (Conv2D)             (None, 128, 128, 64) 36928       leaky_re_lu_153[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_154 (LeakyReLU)     (None, 128, 128, 64) 0           conv2d_159[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "up_sampling2d_36 (UpSampling2D) (None, 256, 256, 64) 0           leaky_re_lu_154[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att1skip_conv (Conv2D)          (None, 256, 256, 32) 1056        leaky_re_lu_132[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att1direct_conv (Conv2D)        (None, 256, 256, 32) 2080        up_sampling2d_36[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "add_36 (Add)                    (None, 256, 256, 32) 0           att1skip_conv[0][0]              \n",
      "                                                                 att1direct_conv[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "att1_relu (LeakyReLU)           (None, 256, 256, 32) 0           add_36[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "att1_att (Conv2D)               (None, 256, 256, 1)  33          att1_relu[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "multiply_36 (Multiply)          (None, 256, 256, 32) 0           leaky_re_lu_132[0][0]            \n",
      "                                                                 att1_att[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_36 (Concatenate)    (None, 256, 256, 96) 0           multiply_36[0][0]                \n",
      "                                                                 up_sampling2d_36[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_160 (Conv2D)             (None, 256, 256, 32) 27680       concatenate_36[0][0]             \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_155 (LeakyReLU)     (None, 256, 256, 32) 0           conv2d_160[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_161 (Conv2D)             (None, 256, 256, 32) 9248        leaky_re_lu_155[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "leaky_re_lu_156 (LeakyReLU)     (None, 256, 256, 32) 0           conv2d_161[0][0]                 \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_162 (Conv2D)             (None, 256, 256, 1)  33          leaky_re_lu_156[0][0]            \n",
      "==================================================================================================\n",
      "Total params: 130,020,007\n",
      "Trainable params: 130,020,007\n",
      "Non-trainable params: 0\n",
      "__________________________________________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [],
   "source": [
    "def predictTestSet(model_location):\n",
    "    model.load_weights(model_location)\n",
    "\n",
    "    file_names = next(os.walk(test_data_dir))[2]\n",
    "    scores = []\n",
    "    for file in file_names:\n",
    "        print (file)\n",
    "        grey_img = load_img(os.path.join(test_data_dir,file), target_size=(img_rows, img_cols), grayscale=False)\n",
    "        mask_img = load_img(os.path.join(test_data_mask_dir,file.split('.')[0]+\"_segmentation.png\"), \n",
    "                            target_size=(img_rows, img_cols), grayscale=True)\n",
    "        img = img_to_array(grey_img)\n",
    "        img_mask = img_to_array(mask_img)\n",
    "\n",
    "        #Preprocess image mask\n",
    "        #img_mask = img_mask /255\n",
    "        #img_mask[img_mask > 0.5] = 1\n",
    "        #img_mask[img_mask <= 0.5] = 0\n",
    "        #Preprocess images\n",
    "        #mean = np.mean(img)  # mean for data centering\n",
    "        #std = np.std(img)  # std for data normalization\n",
    "        #img -= mean\n",
    "        #img /= std\n",
    "        #img, img_mask= normalizeData_rgb(img, img_mask)\n",
    "        img, img_mask = normalizeData(img, img_mask)\n",
    "        img = np.reshape(img,(1,)+img.shape)\n",
    "\n",
    "        pred = model.predict([img])\n",
    "        sess = tf.Session()\n",
    "        score = sess.run(jaccard_coef(img_mask, pred))\n",
    "        print(\"{} -- jaccard index: {}\".format(file,score))\n",
    "        scores.append([file,score])\n",
    "\n",
    "        result_img = array_to_img(pred[0] * 255 )\n",
    "        result_img.save(os.path.join(test_data_pred_dir, file.split('.')[0] + '_predict.jpg'))\n",
    "\n",
    "    with open(result_file, 'w') as f:\n",
    "        f.write(\"filename, jaccard_index\\n\")\n",
    "        for i in range(len(scores)):\n",
    "        #print(scores[i])\n",
    "            f.write(\"{},{}\\n\".format(scores[i][0], scores[i][1]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ISIC_0015208.jpg\n",
      "ISIC_0015208.jpg -- jaccard index: 0.9436652660369873\n",
      "ISIC_0014110.jpg\n",
      "ISIC_0014110.jpg -- jaccard index: 0.9409053325653076\n",
      "ISIC_0015207.jpg\n",
      "ISIC_0015207.jpg -- jaccard index: 0.722905695438385\n",
      "ISIC_0009951.jpg\n",
      "ISIC_0009951.jpg -- jaccard index: 0.6307893395423889\n",
      "ISIC_0000365.jpg\n",
      "ISIC_0000365.jpg -- jaccard index: 0.8906716704368591\n",
      "ISIC_0014092.jpg\n",
      "ISIC_0014092.jpg -- jaccard index: 0.797973096370697\n",
      "ISIC_0014855.jpg\n",
      "ISIC_0014855.jpg -- jaccard index: 0.8642931580543518\n",
      "ISIC_0011166.jpg\n",
      "ISIC_0011166.jpg -- jaccard index: 0.8667610883712769\n",
      "ISIC_0010599.jpg\n",
      "ISIC_0010599.jpg -- jaccard index: 0.9627455472946167\n",
      "ISIC_0000484.jpg\n",
      "ISIC_0000484.jpg -- jaccard index: 0.8400183916091919\n",
      "ISIC_0010474.jpg\n",
      "ISIC_0010474.jpg -- jaccard index: 0.9335598945617676\n",
      "ISIC_0012706.jpg\n",
      "ISIC_0012706.jpg -- jaccard index: 0.2535800337791443\n",
      "ISIC_0010067.jpg\n",
      "ISIC_0010067.jpg -- jaccard index: 0.7856256365776062\n",
      "ISIC_0015229.jpg\n",
      "ISIC_0015229.jpg -- jaccard index: 0.8272416591644287\n",
      "ISIC_0015568.jpg\n",
      "ISIC_0015568.jpg -- jaccard index: 0.8515062928199768\n",
      "ISIC_0015973.jpg\n",
      "ISIC_0015973.jpg -- jaccard index: 0.9246346950531006\n",
      "ISIC_0012713.jpg\n",
      "ISIC_0012713.jpg -- jaccard index: 0.8926175832748413\n",
      "ISIC_0015152.jpg\n",
      "ISIC_0015152.jpg -- jaccard index: 0.6658318042755127\n",
      "ISIC_0012216.jpg\n",
      "ISIC_0012216.jpg -- jaccard index: 0.7280997037887573\n",
      "ISIC_0015190.jpg\n",
      "ISIC_0015190.jpg -- jaccard index: 0.9046779274940491\n",
      "ISIC_0000006.jpg\n",
      "ISIC_0000006.jpg -- jaccard index: 0.7637454271316528\n",
      "ISIC_0012777.jpg\n",
      "ISIC_0012777.jpg -- jaccard index: 0.8375543355941772\n",
      "ISIC_0012720.jpg\n",
      "ISIC_0012720.jpg -- jaccard index: 0.8799571990966797\n",
      "ISIC_0000543.jpg\n",
      "ISIC_0000543.jpg -- jaccard index: 0.8299614191055298\n",
      "ISIC_0010602.jpg\n",
      "ISIC_0010602.jpg -- jaccard index: 0.9721381068229675\n",
      "ISIC_0001367.jpg\n",
      "ISIC_0001367.jpg -- jaccard index: 0.8057807683944702\n",
      "ISIC_0005247.jpg\n",
      "ISIC_0005247.jpg -- jaccard index: 0.7646805047988892\n",
      "ISIC_0009160.jpg\n",
      "ISIC_0009160.jpg -- jaccard index: 0.815097987651825\n",
      "ISIC_0010367.jpg\n",
      "ISIC_0010367.jpg -- jaccard index: 0.8054978251457214\n",
      "ISIC_0013996.jpg\n",
      "ISIC_0013996.jpg -- jaccard index: 0.8511660695075989\n",
      "ISIC_0000494.jpg\n",
      "ISIC_0000494.jpg -- jaccard index: 0.779393196105957\n",
      "ISIC_0000361.jpg\n",
      "ISIC_0000361.jpg -- jaccard index: 0.9315310120582581\n",
      "ISIC_0013288.jpg\n",
      "ISIC_0013288.jpg -- jaccard index: 0.6891355514526367\n",
      "ISIC_0002647.jpg\n",
      "ISIC_0002647.jpg -- jaccard index: 0.8507370352745056\n",
      "ISIC_0012987.jpg\n",
      "ISIC_0012987.jpg -- jaccard index: 0.7464121580123901\n",
      "ISIC_0010364.jpg\n",
      "ISIC_0010364.jpg -- jaccard index: 0.8975114822387695\n",
      "ISIC_0014136.jpg\n",
      "ISIC_0014136.jpg -- jaccard index: 0.9159443378448486\n",
      "ISIC_0011117.jpg\n",
      "ISIC_0011117.jpg -- jaccard index: 0.24727052450180054\n",
      "ISIC_0014601.jpg\n",
      "ISIC_0014601.jpg -- jaccard index: 0.7518089413642883\n",
      "ISIC_0011382.jpg\n",
      "ISIC_0011382.jpg -- jaccard index: 0.9562023282051086\n",
      "ISIC_0000092.jpg\n",
      "ISIC_0000092.jpg -- jaccard index: 0.8795875906944275\n",
      "ISIC_0012378.jpg\n",
      "ISIC_0012378.jpg -- jaccard index: 0.9113312363624573\n",
      "ISIC_0012681.jpg\n",
      "ISIC_0012681.jpg -- jaccard index: 0.9376083016395569\n",
      "ISIC_0013970.jpg\n",
      "ISIC_0013970.jpg -- jaccard index: 0.618251621723175\n",
      "ISIC_0000066.jpg\n",
      "ISIC_0000066.jpg -- jaccard index: 0.8331710696220398\n",
      "ISIC_0014458.jpg\n",
      "ISIC_0014458.jpg -- jaccard index: 0.9017297625541687\n",
      "ISIC_0013867.jpg\n",
      "ISIC_0013867.jpg -- jaccard index: 0.537011444568634\n",
      "ISIC_0003174.jpg\n",
      "ISIC_0003174.jpg -- jaccard index: 0.6375080347061157\n",
      "ISIC_0001242.jpg\n",
      "ISIC_0001242.jpg -- jaccard index: 0.9105916619300842\n",
      "ISIC_0000490.jpg\n",
      "ISIC_0000490.jpg -- jaccard index: 0.8873879313468933\n",
      "ISIC_0013114.jpg\n",
      "ISIC_0013114.jpg -- jaccard index: 0.819212794303894\n",
      "ISIC_0002206.jpg\n",
      "ISIC_0002206.jpg -- jaccard index: 0.8379432559013367\n",
      "ISIC_0000541.jpg\n",
      "ISIC_0000541.jpg -- jaccard index: 0.9061208963394165\n",
      "ISIC_0013369.jpg\n",
      "ISIC_0013369.jpg -- jaccard index: 0.8676166534423828\n",
      "ISIC_0015974.jpg\n",
      "ISIC_0015974.jpg -- jaccard index: 0.8771066069602966\n",
      "ISIC_0014753.jpg\n",
      "ISIC_0014753.jpg -- jaccard index: 0.9427036643028259\n",
      "ISIC_0011344.jpg\n",
      "ISIC_0011344.jpg -- jaccard index: 0.8751916289329529\n",
      "ISIC_0000049.jpg\n",
      "ISIC_0000049.jpg -- jaccard index: 0.728393018245697\n",
      "ISIC_0013581.jpg\n",
      "ISIC_0013581.jpg -- jaccard index: 0.8561224937438965\n",
      "ISIC_0006711.jpg\n",
      "ISIC_0006711.jpg -- jaccard index: 0.6732425689697266\n",
      "ISIC_0010251.jpg\n",
      "ISIC_0010251.jpg -- jaccard index: 0.9403124451637268\n",
      "ISIC_0000125.jpg\n",
      "ISIC_0000125.jpg -- jaccard index: 0.8289433717727661\n",
      "ISIC_0009884.jpg\n",
      "ISIC_0009884.jpg -- jaccard index: 0.8373584151268005\n",
      "ISIC_0009940.jpg\n",
      "ISIC_0009940.jpg -- jaccard index: 0.9257818460464478\n",
      "ISIC_0013942.jpg\n",
      "ISIC_0013942.jpg -- jaccard index: 0.8520644903182983\n",
      "ISIC_0010171.jpg\n",
      "ISIC_0010171.jpg -- jaccard index: 0.8992510437965393\n",
      "ISIC_0016064.jpg\n",
      "ISIC_0016064.jpg -- jaccard index: 0.8337986469268799\n",
      "ISIC_0014857.jpg\n",
      "ISIC_0014857.jpg -- jaccard index: 0.938194751739502\n",
      "ISIC_0000549.jpg\n",
      "ISIC_0000549.jpg -- jaccard index: 0.8427664637565613\n",
      "ISIC_0015193.jpg\n",
      "ISIC_0015193.jpg -- jaccard index: 0.9572117328643799\n",
      "ISIC_0014713.jpg\n",
      "ISIC_0014713.jpg -- jaccard index: 0.8028249144554138\n",
      "ISIC_0013027.jpg\n",
      "ISIC_0013027.jpg -- jaccard index: 0.8662025928497314\n",
      "ISIC_0014743.jpg\n",
      "ISIC_0014743.jpg -- jaccard index: 0.8040934801101685\n",
      "ISIC_0011362.jpg\n",
      "ISIC_0011362.jpg -- jaccard index: 0.8284011483192444\n",
      "ISIC_0015312.jpg\n",
      "ISIC_0015312.jpg -- jaccard index: 0.9613579511642456\n",
      "ISIC_0015368.jpg\n",
      "ISIC_0015368.jpg -- jaccard index: 0.9529173374176025\n",
      "ISIC_0002616.jpg\n",
      "ISIC_0002616.jpg -- jaccard index: 0.7540341019630432\n",
      "ISIC_0012678.jpg\n",
      "ISIC_0012678.jpg -- jaccard index: 0.8701381087303162\n",
      "ISIC_0012320.jpg\n",
      "ISIC_0012320.jpg -- jaccard index: 0.9383296966552734\n",
      "ISIC_0013713.jpg\n",
      "ISIC_0013713.jpg -- jaccard index: 0.9077323079109192\n",
      "ISIC_0014692.jpg\n",
      "ISIC_0014692.jpg -- jaccard index: 0.9260239005088806\n",
      "ISIC_0014739.jpg\n",
      "ISIC_0014739.jpg -- jaccard index: 0.896080732345581\n",
      "ISIC_0012711.jpg\n",
      "ISIC_0012711.jpg -- jaccard index: 0.7604891061782837\n",
      "ISIC_0015946.jpg\n",
      "ISIC_0015946.jpg -- jaccard index: 0.8995885252952576\n",
      "ISIC_0009201.jpg\n",
      "ISIC_0009201.jpg -- jaccard index: 0.7917638421058655\n",
      "ISIC_0010237.jpg\n",
      "ISIC_0010237.jpg -- jaccard index: 0.7190014123916626\n",
      "ISIC_0001186.jpg\n",
      "ISIC_0001186.jpg -- jaccard index: 0.9361152648925781\n",
      "ISIC_0012705.jpg\n",
      "ISIC_0012705.jpg -- jaccard index: 0.7815842032432556\n",
      "ISIC_0014525.jpg\n",
      "ISIC_0014525.jpg -- jaccard index: 0.1442166417837143\n",
      "ISIC_0000350.jpg\n",
      "ISIC_0000350.jpg -- jaccard index: 0.9435402750968933\n",
      "ISIC_0012852.jpg\n",
      "ISIC_0012852.jpg -- jaccard index: 0.7207797169685364\n",
      "ISIC_0015955.jpg\n",
      "ISIC_0015955.jpg -- jaccard index: 0.8124079704284668\n",
      "ISIC_0003056.jpg\n",
      "ISIC_0003056.jpg -- jaccard index: 0.4409376382827759\n",
      "ISIC_0010010.jpg\n",
      "ISIC_0010010.jpg -- jaccard index: 0.8719698190689087\n",
      "ISIC_0010497.jpg\n",
      "ISIC_0010497.jpg -- jaccard index: 0.8268467783927917\n",
      "ISIC_0010191.jpg\n",
      "ISIC_0010191.jpg -- jaccard index: 0.9125649929046631\n",
      "ISIC_0012211.jpg\n",
      "ISIC_0012211.jpg -- jaccard index: 0.947758138179779\n",
      "ISIC_0015941.jpg\n",
      "ISIC_0015941.jpg -- jaccard index: 0.908970057964325\n",
      "ISIC_0000260.jpg\n",
      "ISIC_0000260.jpg -- jaccard index: 0.8738111853599548\n",
      "ISIC_0016050.jpg\n",
      "ISIC_0016050.jpg -- jaccard index: 0.9249926805496216\n",
      "ISIC_0014173.jpg\n",
      "ISIC_0014173.jpg -- jaccard index: 0.7059847116470337\n",
      "ISIC_0009941.jpg\n",
      "ISIC_0009941.jpg -- jaccard index: 0.9285010099411011\n",
      "ISIC_0015215.jpg\n",
      "ISIC_0015215.jpg -- jaccard index: 0.8729488253593445\n",
      "ISIC_0012956.jpg\n",
      "ISIC_0012956.jpg -- jaccard index: 0.7300177216529846\n",
      "ISIC_0011213.jpg\n",
      "ISIC_0011213.jpg -- jaccard index: 0.8407958149909973\n",
      "ISIC_0000163.jpg\n",
      "ISIC_0000163.jpg -- jaccard index: 0.8108067512512207\n",
      "ISIC_0010213.jpg\n",
      "ISIC_0010213.jpg -- jaccard index: 0.8654654026031494\n",
      "ISIC_0016003.jpg\n",
      "ISIC_0016003.jpg -- jaccard index: 0.9130208492279053\n",
      "ISIC_0014694.jpg\n",
      "ISIC_0014694.jpg -- jaccard index: 0.9680963754653931\n",
      "ISIC_0013304.jpg\n",
      "ISIC_0013304.jpg -- jaccard index: 0.7149157524108887\n",
      "ISIC_0013839.jpg\n",
      "ISIC_0013839.jpg -- jaccard index: 0.8270245790481567\n",
      "ISIC_0014983.jpg\n",
      "ISIC_0014983.jpg -- jaccard index: 0.9608085751533508\n",
      "ISIC_0000503.jpg\n",
      "ISIC_0000503.jpg -- jaccard index: 0.9563416242599487\n",
      "ISIC_0000202.jpg\n",
      "ISIC_0000202.jpg -- jaccard index: 0.8418083190917969\n",
      "ISIC_0000425.jpg\n",
      "ISIC_0000425.jpg -- jaccard index: 0.9333022236824036\n",
      "ISIC_0013216.jpg\n",
      "ISIC_0013216.jpg -- jaccard index: 0.939318835735321\n",
      "ISIC_0000215.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ISIC_0000215.jpg -- jaccard index: 0.8718861937522888\n",
      "ISIC_0013794.jpg\n",
      "ISIC_0013794.jpg -- jaccard index: 0.9334277510643005\n",
      "ISIC_0013001.jpg\n",
      "ISIC_0013001.jpg -- jaccard index: 0.6950810551643372\n",
      "ISIC_0014956.jpg\n",
      "ISIC_0014956.jpg -- jaccard index: 0.8219770193099976\n",
      "ISIC_0015044.jpg\n",
      "ISIC_0015044.jpg -- jaccard index: 0.9391632676124573\n",
      "ISIC_0000048.jpg\n",
      "ISIC_0000048.jpg -- jaccard index: 0.9145694971084595\n",
      "ISIC_0015279.jpg\n",
      "ISIC_0015279.jpg -- jaccard index: 0.7088068127632141\n",
      "ISIC_0009902.jpg\n",
      "ISIC_0009902.jpg -- jaccard index: 0.805670976638794\n",
      "ISIC_0014775.jpg\n",
      "ISIC_0014775.jpg -- jaccard index: 0.7447139024734497\n",
      "ISIC_0014546.jpg\n",
      "ISIC_0014546.jpg -- jaccard index: 0.8029857873916626\n",
      "ISIC_0000036.jpg\n",
      "ISIC_0000036.jpg -- jaccard index: 0.8227514624595642\n",
      "ISIC_0014787.jpg\n",
      "ISIC_0014787.jpg -- jaccard index: 0.7837896347045898\n",
      "ISIC_0014985.jpg\n",
      "ISIC_0014985.jpg -- jaccard index: 0.4359811544418335\n",
      "ISIC_0013311.jpg\n",
      "ISIC_0013311.jpg -- jaccard index: 0.8927128314971924\n",
      "ISIC_0012342.jpg\n",
      "ISIC_0012342.jpg -- jaccard index: 0.7904635667800903\n",
      "ISIC_0014545.jpg\n",
      "ISIC_0014545.jpg -- jaccard index: 0.9462847113609314\n",
      "ISIC_0014665.jpg\n",
      "ISIC_0014665.jpg -- jaccard index: 0.9310728311538696\n",
      "ISIC_0007344.jpg\n",
      "ISIC_0007344.jpg -- jaccard index: 0.8975151777267456\n",
      "ISIC_0013807.jpg\n",
      "ISIC_0013807.jpg -- jaccard index: 0.7514861226081848\n",
      "ISIC_0000243.jpg\n",
      "ISIC_0000243.jpg -- jaccard index: 0.9115517139434814\n",
      "ISIC_0012990.jpg\n",
      "ISIC_0012990.jpg -- jaccard index: 0.9259135127067566\n",
      "ISIC_0012699.jpg\n",
      "ISIC_0012699.jpg -- jaccard index: 0.9434711337089539\n",
      "ISIC_0013962.jpg\n",
      "ISIC_0013962.jpg -- jaccard index: 0.8412951231002808\n",
      "ISIC_0010598.jpg\n",
      "ISIC_0010598.jpg -- jaccard index: 0.9522771835327148\n",
      "ISIC_0010256.jpg\n",
      "ISIC_0010256.jpg -- jaccard index: 0.9239236116409302\n",
      "ISIC_0014947.jpg\n",
      "ISIC_0014947.jpg -- jaccard index: 0.9582499861717224\n",
      "ISIC_0010849.jpg\n",
      "ISIC_0010849.jpg -- jaccard index: 0.7240071296691895\n",
      "ISIC_0013712.jpg\n",
      "ISIC_0013712.jpg -- jaccard index: 0.834695041179657\n",
      "ISIC_0001128.jpg\n",
      "ISIC_0001128.jpg -- jaccard index: 0.8212190270423889\n",
      "ISIC_0011343.jpg\n",
      "ISIC_0011343.jpg -- jaccard index: 0.8075990080833435\n",
      "ISIC_0000060.jpg\n",
      "ISIC_0000060.jpg -- jaccard index: 0.8645034432411194\n",
      "ISIC_0012901.jpg\n",
      "ISIC_0012901.jpg -- jaccard index: 0.9271177649497986\n",
      "ISIC_0014951.jpg\n",
      "ISIC_0014951.jpg -- jaccard index: 0.9670774936676025\n",
      "ISIC_0014336.jpg\n",
      "ISIC_0014336.jpg -- jaccard index: 0.7478048801422119\n",
      "ISIC_0005000.jpg\n",
      "ISIC_0005000.jpg -- jaccard index: 0.9397296905517578\n",
      "ISIC_0016028.jpg\n",
      "ISIC_0016028.jpg -- jaccard index: 0.8883362412452698\n",
      "ISIC_0010025.jpg\n",
      "ISIC_0010025.jpg -- jaccard index: 0.8714153170585632\n",
      "ISIC_0015593.jpg\n",
      "ISIC_0015593.jpg -- jaccard index: 0.8735170960426331\n",
      "ISIC_0000421.jpg\n",
      "ISIC_0000421.jpg -- jaccard index: 0.9152444005012512\n",
      "ISIC_0012487.jpg\n",
      "ISIC_0012487.jpg -- jaccard index: 0.755256712436676\n",
      "ISIC_0007156.jpg\n",
      "ISIC_0007156.jpg -- jaccard index: 0.7705384492874146\n",
      "ISIC_0015160.jpg\n",
      "ISIC_0015160.jpg -- jaccard index: 0.9182952642440796\n",
      "ISIC_0001212.jpg\n",
      "ISIC_0001212.jpg -- jaccard index: 0.8278939127922058\n",
      "ISIC_0003805.jpg\n",
      "ISIC_0003805.jpg -- jaccard index: 0.8601932525634766\n",
      "ISIC_0015607.jpg\n",
      "ISIC_0015607.jpg -- jaccard index: 0.17605319619178772\n",
      "ISIC_0010584.jpg\n",
      "ISIC_0010584.jpg -- jaccard index: 0.7332636117935181\n",
      "ISIC_0013189.jpg\n",
      "ISIC_0013189.jpg -- jaccard index: 0.6857994794845581\n",
      "ISIC_0000228.jpg\n",
      "ISIC_0000228.jpg -- jaccard index: 0.9453548789024353\n",
      "ISIC_0000047.jpg\n",
      "ISIC_0000047.jpg -- jaccard index: 0.8153315782546997\n",
      "ISIC_0011109.jpg\n",
      "ISIC_0011109.jpg -- jaccard index: 0.6672567129135132\n",
      "ISIC_0000486.jpg\n",
      "ISIC_0000486.jpg -- jaccard index: 0.8958838582038879\n",
      "ISIC_0012680.jpg\n",
      "ISIC_0012680.jpg -- jaccard index: 0.9615152478218079\n",
      "ISIC_0014805.jpg\n",
      "ISIC_0014805.jpg -- jaccard index: 0.9301795959472656\n",
      "ISIC_0008998.jpg\n",
      "ISIC_0008998.jpg -- jaccard index: 0.9368879199028015\n",
      "ISIC_0013249.jpg\n",
      "ISIC_0013249.jpg -- jaccard index: 0.6457675099372864\n",
      "ISIC_0000510.jpg\n",
      "ISIC_0000510.jpg -- jaccard index: 0.8681313395500183\n",
      "ISIC_0010327.jpg\n",
      "ISIC_0010327.jpg -- jaccard index: 0.7631288170814514\n",
      "ISIC_0013929.jpg\n",
      "ISIC_0013929.jpg -- jaccard index: 0.5472398996353149\n",
      "ISIC_0000012.jpg\n",
      "ISIC_0000012.jpg -- jaccard index: 0.9083700180053711\n",
      "ISIC_0000226.jpg\n",
      "ISIC_0000226.jpg -- jaccard index: 0.7871127128601074\n",
      "ISIC_0012700.jpg\n",
      "ISIC_0012700.jpg -- jaccard index: 0.9378776550292969\n",
      "ISIC_0011157.jpg\n",
      "ISIC_0011157.jpg -- jaccard index: 0.9217442274093628\n",
      "ISIC_0001204.jpg\n",
      "ISIC_0001204.jpg -- jaccard index: 0.6444090604782104\n",
      "ISIC_0010263.jpg\n",
      "ISIC_0010263.jpg -- jaccard index: 0.9120244383811951\n",
      "ISIC_0000380.jpg\n",
      "ISIC_0000380.jpg -- jaccard index: 0.8965680599212646\n",
      "ISIC_0014846.jpg\n",
      "ISIC_0014846.jpg -- jaccard index: 0.9720230102539062\n",
      "ISIC_0013306.jpg\n",
      "ISIC_0013306.jpg -- jaccard index: 0.0002527007891330868\n",
      "ISIC_0015998.jpg\n",
      "ISIC_0015998.jpg -- jaccard index: 0.7889413833618164\n",
      "ISIC_0010015.jpg\n",
      "ISIC_0010015.jpg -- jaccard index: 0.9618295431137085\n",
      "ISIC_0002780.jpg\n",
      "ISIC_0002780.jpg -- jaccard index: 0.7807896733283997\n",
      "ISIC_0015108.jpg\n",
      "ISIC_0015108.jpg -- jaccard index: 0.8754676580429077\n",
      "ISIC_0014826.jpg\n",
      "ISIC_0014826.jpg -- jaccard index: 0.8475857377052307\n",
      "ISIC_0012944.jpg\n",
      "ISIC_0012944.jpg -- jaccard index: 0.8187583088874817\n",
      "ISIC_0014073.jpg\n",
      "ISIC_0014073.jpg -- jaccard index: 0.8343510031700134\n",
      "ISIC_0012376.jpg\n",
      "ISIC_0012376.jpg -- jaccard index: 0.8506720066070557\n",
      "ISIC_0010322.jpg\n",
      "ISIC_0010322.jpg -- jaccard index: 0.7383553981781006\n",
      "ISIC_0014311.jpg\n",
      "ISIC_0014311.jpg -- jaccard index: 0.9304252862930298\n",
      "ISIC_0000085.jpg\n",
      "ISIC_0000085.jpg -- jaccard index: 0.9194021224975586\n",
      "ISIC_0000216.jpg\n",
      "ISIC_0000216.jpg -- jaccard index: 0.9757170677185059\n",
      "ISIC_0012749.jpg\n",
      "ISIC_0012749.jpg -- jaccard index: 0.4224250018596649\n",
      "ISIC_0000352.jpg\n",
      "ISIC_0000352.jpg -- jaccard index: 0.8459999561309814\n",
      "ISIC_0009987.jpg\n",
      "ISIC_0009987.jpg -- jaccard index: 0.8162736892700195\n",
      "ISIC_0001103.jpg\n",
      "ISIC_0001103.jpg -- jaccard index: 0.8576968908309937\n",
      "ISIC_0009533.jpg\n",
      "ISIC_0009533.jpg -- jaccard index: 0.886888861656189\n",
      "ISIC_0013414.jpg\n",
      "ISIC_0013414.jpg -- jaccard index: 0.9128813147544861\n",
      "ISIC_0002438.jpg\n",
      "ISIC_0002438.jpg -- jaccard index: 0.9157899618148804\n",
      "ISIC_0014760.jpg\n",
      "ISIC_0014760.jpg -- jaccard index: 0.97818523645401\n",
      "ISIC_0000170.jpg\n",
      "ISIC_0000170.jpg -- jaccard index: 0.8315556049346924\n",
      "ISIC_0013235.jpg\n",
      "ISIC_0013235.jpg -- jaccard index: 0.9337763786315918\n",
      "ISIC_0013227.jpg\n",
      "ISIC_0013227.jpg -- jaccard index: 0.7273262739181519\n",
      "ISIC_0011081.jpg\n",
      "ISIC_0011081.jpg -- jaccard index: 0.7854913473129272\n",
      "ISIC_0009896.jpg\n",
      "ISIC_0009896.jpg -- jaccard index: 0.5645012855529785\n",
      "ISIC_0000028.jpg\n",
      "ISIC_0000028.jpg -- jaccard index: 0.9530775547027588\n",
      "ISIC_0012107.jpg\n",
      "ISIC_0012107.jpg -- jaccard index: 0.870381236076355\n",
      "ISIC_0010374.jpg\n",
      "ISIC_0010374.jpg -- jaccard index: 0.9523716568946838\n",
      "ISIC_0014930.jpg\n",
      "ISIC_0014930.jpg -- jaccard index: 0.9503369331359863\n",
      "ISIC_0014026.jpg\n",
      "ISIC_0014026.jpg -- jaccard index: 0.9212887287139893\n",
      "ISIC_0000219.jpg\n",
      "ISIC_0000219.jpg -- jaccard index: 0.9134482741355896\n",
      "ISIC_0014666.jpg\n",
      "ISIC_0014666.jpg -- jaccard index: 0.7431915402412415\n",
      "ISIC_0015309.jpg\n",
      "ISIC_0015309.jpg -- jaccard index: 0.9620127081871033\n",
      "ISIC_0015412.jpg\n",
      "ISIC_0015412.jpg -- jaccard index: 0.8460578322410583\n",
      "ISIC_0000046.jpg\n",
      "ISIC_0000046.jpg -- jaccard index: 0.8890722393989563\n",
      "ISIC_0010494.jpg\n",
      "ISIC_0010494.jpg -- jaccard index: 0.94010329246521\n",
      "ISIC_0011129.jpg\n",
      "ISIC_0011129.jpg -- jaccard index: 0.9476467967033386\n",
      "ISIC_0012988.jpg\n",
      "ISIC_0012988.jpg -- jaccard index: 0.9436873197555542\n",
      "ISIC_0012786.jpg\n",
      "ISIC_0012786.jpg -- jaccard index: 0.6626006960868835\n",
      "ISIC_0001306.jpg\n",
      "ISIC_0001306.jpg -- jaccard index: 0.5233122110366821\n",
      "ISIC_0014190.jpg\n",
      "ISIC_0014190.jpg -- jaccard index: 0.7574143409729004\n",
      "ISIC_0014632.jpg\n",
      "ISIC_0014632.jpg -- jaccard index: 0.5357561707496643\n",
      "ISIC_0013565.jpg\n",
      "ISIC_0013565.jpg -- jaccard index: 0.10287605971097946\n",
      "ISIC_0000149.jpg\n",
      "ISIC_0000149.jpg -- jaccard index: 0.8358327150344849\n",
      "ISIC_0010070.jpg\n",
      "ISIC_0010070.jpg -- jaccard index: 0.6815313696861267\n",
      "ISIC_0014028.jpg\n",
      "ISIC_0014028.jpg -- jaccard index: 0.8884910941123962\n",
      "ISIC_0014476.jpg\n",
      "ISIC_0014476.jpg -- jaccard index: 0.6715862154960632\n",
      "ISIC_0013458.jpg\n",
      "ISIC_0013458.jpg -- jaccard index: 0.9616069793701172\n",
      "ISIC_0014974.jpg\n",
      "ISIC_0014974.jpg -- jaccard index: 0.9455580115318298\n",
      "ISIC_0012661.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ISIC_0012661.jpg -- jaccard index: 0.7268364429473877\n",
      "ISIC_0009967.jpg\n",
      "ISIC_0009967.jpg -- jaccard index: 0.954157292842865\n",
      "ISIC_0000095.jpg\n",
      "ISIC_0000095.jpg -- jaccard index: 0.9075051546096802\n",
      "ISIC_0003346.jpg\n",
      "ISIC_0003346.jpg -- jaccard index: 0.9261913299560547\n",
      "ISIC_0012521.jpg\n",
      "ISIC_0012521.jpg -- jaccard index: 0.9329481720924377\n",
      "ISIC_0014150.jpg\n",
      "ISIC_0014150.jpg -- jaccard index: 0.9435707330703735\n",
      "ISIC_0014089.jpg\n",
      "ISIC_0014089.jpg -- jaccard index: 0.895251989364624\n",
      "ISIC_0010847.jpg\n",
      "ISIC_0010847.jpg -- jaccard index: 0.6308495998382568\n",
      "ISIC_0014794.jpg\n",
      "ISIC_0014794.jpg -- jaccard index: 0.9643744230270386\n",
      "ISIC_0013815.jpg\n",
      "ISIC_0013815.jpg -- jaccard index: 0.7556180357933044\n",
      "ISIC_0015241.jpg\n",
      "ISIC_0015241.jpg -- jaccard index: 0.9281194806098938\n",
      "ISIC_0015949.jpg\n",
      "ISIC_0015949.jpg -- jaccard index: 0.9440951347351074\n",
      "ISIC_0014486.jpg\n",
      "ISIC_0014486.jpg -- jaccard index: 0.7388418316841125\n",
      "ISIC_0000525.jpg\n",
      "ISIC_0000525.jpg -- jaccard index: 0.9317834973335266\n",
      "ISIC_0015211.jpg\n",
      "ISIC_0015211.jpg -- jaccard index: 0.5594186186790466\n",
      "ISIC_0000427.jpg\n",
      "ISIC_0000427.jpg -- jaccard index: 0.9439970254898071\n",
      "ISIC_0002453.jpg\n",
      "ISIC_0002453.jpg -- jaccard index: 0.8455137610435486\n",
      "ISIC_0000297.jpg\n",
      "ISIC_0000297.jpg -- jaccard index: 0.9452128410339355\n",
      "ISIC_0014688.jpg\n",
      "ISIC_0014688.jpg -- jaccard index: 0.8861977458000183\n",
      "ISIC_0016012.jpg\n",
      "ISIC_0016012.jpg -- jaccard index: 0.8288918733596802\n",
      "ISIC_0000029.jpg\n",
      "ISIC_0000029.jpg -- jaccard index: 0.9696474075317383\n",
      "ISIC_0000157.jpg\n",
      "ISIC_0000157.jpg -- jaccard index: 0.9356634020805359\n",
      "ISIC_0009914.jpg\n",
      "ISIC_0009914.jpg -- jaccard index: 0.9624011516571045\n",
      "ISIC_0000353.jpg\n",
      "ISIC_0000353.jpg -- jaccard index: 0.9044833779335022\n",
      "ISIC_0010024.jpg\n",
      "ISIC_0010024.jpg -- jaccard index: 0.2798539698123932\n",
      "ISIC_0012137.jpg\n",
      "ISIC_0012137.jpg -- jaccard index: 0.7450264692306519\n",
      "ISIC_0000112.jpg\n",
      "ISIC_0000112.jpg -- jaccard index: 0.7865946888923645\n",
      "ISIC_0013832.jpg\n",
      "ISIC_0013832.jpg -- jaccard index: 0.7393491268157959\n",
      "ISIC_0009599.jpg\n",
      "ISIC_0009599.jpg -- jaccard index: 0.9303090572357178\n",
      "ISIC_0008256.jpg\n",
      "ISIC_0008256.jpg -- jaccard index: 0.9262427091598511\n",
      "ISIC_0013580.jpg\n",
      "ISIC_0013580.jpg -- jaccard index: 0.9334269165992737\n",
      "ISIC_0000167.jpg\n",
      "ISIC_0000167.jpg -- jaccard index: 0.8906331658363342\n",
      "ISIC_0015057.jpg\n",
      "ISIC_0015057.jpg -- jaccard index: 0.7439544200897217\n",
      "ISIC_0000376.jpg\n",
      "ISIC_0000376.jpg -- jaccard index: 0.7968903183937073\n",
      "ISIC_0000135.jpg\n",
      "ISIC_0000135.jpg -- jaccard index: 0.9608650803565979\n",
      "ISIC_0012135.jpg\n",
      "ISIC_0012135.jpg -- jaccard index: 0.8327770233154297\n",
      "ISIC_0013672.jpg\n",
      "ISIC_0013672.jpg -- jaccard index: 0.8473187685012817\n",
      "ISIC_0012855.jpg\n",
      "ISIC_0012855.jpg -- jaccard index: 0.9364020824432373\n",
      "ISIC_0010023.jpg\n",
      "ISIC_0010023.jpg -- jaccard index: 0.8999176025390625\n",
      "ISIC_0013065.jpg\n",
      "ISIC_0013065.jpg -- jaccard index: 0.665570855140686\n",
      "ISIC_0001190.jpg\n",
      "ISIC_0001190.jpg -- jaccard index: 0.7274547815322876\n",
      "ISIC_0011330.jpg\n",
      "ISIC_0011330.jpg -- jaccard index: 0.9125881195068359\n",
      "ISIC_0012372.jpg\n",
      "ISIC_0012372.jpg -- jaccard index: 0.6356396079063416\n",
      "ISIC_0012677.jpg\n",
      "ISIC_0012677.jpg -- jaccard index: 0.899179220199585\n",
      "ISIC_0000470.jpg\n",
      "ISIC_0000470.jpg -- jaccard index: 0.9049803614616394\n",
      "ISIC_0012228.jpg\n",
      "ISIC_0012228.jpg -- jaccard index: 0.9031135439872742\n",
      "ISIC_0014936.jpg\n",
      "ISIC_0014936.jpg -- jaccard index: 0.8119565844535828\n",
      "ISIC_0013167.jpg\n",
      "ISIC_0013167.jpg -- jaccard index: 0.9376943707466125\n",
      "ISIC_0012856.jpg\n",
      "ISIC_0012856.jpg -- jaccard index: 0.3977651596069336\n",
      "ISIC_0014419.jpg\n",
      "ISIC_0014419.jpg -- jaccard index: 0.45271825790405273\n",
      "ISIC_0000155.jpg\n",
      "ISIC_0000155.jpg -- jaccard index: 0.9636436104774475\n",
      "ISIC_0012518.jpg\n",
      "ISIC_0012518.jpg -- jaccard index: 0.4832334816455841\n",
      "ISIC_0014735.jpg\n",
      "ISIC_0014735.jpg -- jaccard index: 0.9694727063179016\n",
      "ISIC_0012469.jpg\n",
      "ISIC_0012469.jpg -- jaccard index: 0.5687349438667297\n",
      "ISIC_0012311.jpg\n",
      "ISIC_0012311.jpg -- jaccard index: 0.848959743976593\n",
      "ISIC_0010459.jpg\n",
      "ISIC_0010459.jpg -- jaccard index: 0.9539490342140198\n",
      "ISIC_0015440.jpg\n",
      "ISIC_0015440.jpg -- jaccard index: 0.7637313604354858\n",
      "ISIC_0013428.jpg\n",
      "ISIC_0013428.jpg -- jaccard index: 0.9426656365394592\n",
      "ISIC_0009953.jpg\n",
      "ISIC_0009953.jpg -- jaccard index: 0.8717793226242065\n",
      "ISIC_0000268.jpg\n",
      "ISIC_0000268.jpg -- jaccard index: 0.9233512282371521\n",
      "ISIC_0000137.jpg\n",
      "ISIC_0000137.jpg -- jaccard index: 0.9718728065490723\n",
      "ISIC_0012520.jpg\n",
      "ISIC_0012520.jpg -- jaccard index: 0.7851596474647522\n",
      "ISIC_0000397.jpg\n",
      "ISIC_0000397.jpg -- jaccard index: 0.8008288741111755\n",
      "ISIC_0010241.jpg\n",
      "ISIC_0010241.jpg -- jaccard index: 0.9473883509635925\n",
      "ISIC_0000179.jpg\n",
      "ISIC_0000179.jpg -- jaccard index: 0.9144961833953857\n",
      "ISIC_0013615.jpg\n",
      "ISIC_0013615.jpg -- jaccard index: 0.8028905987739563\n",
      "ISIC_0015563.jpg\n",
      "ISIC_0015563.jpg -- jaccard index: 0.9258648157119751\n",
      "ISIC_0016044.jpg\n",
      "ISIC_0016044.jpg -- jaccard index: 0.7174124717712402\n",
      "ISIC_0012156.jpg\n",
      "ISIC_0012156.jpg -- jaccard index: 0.8908128142356873\n",
      "ISIC_0000160.jpg\n",
      "ISIC_0000160.jpg -- jaccard index: 0.9621285796165466\n",
      "ISIC_0012213.jpg\n",
      "ISIC_0012213.jpg -- jaccard index: 0.9064679741859436\n",
      "ISIC_0000355.jpg\n",
      "ISIC_0000355.jpg -- jaccard index: 0.9093089699745178\n",
      "ISIC_0000190.jpg\n",
      "ISIC_0000190.jpg -- jaccard index: 0.9596482515335083\n",
      "ISIC_0014745.jpg\n",
      "ISIC_0014745.jpg -- jaccard index: 0.9691991209983826\n",
      "ISIC_0000367.jpg\n",
      "ISIC_0000367.jpg -- jaccard index: 0.8298212885856628\n",
      "ISIC_0005548.jpg\n",
      "ISIC_0005548.jpg -- jaccard index: 0.9135924577713013\n",
      "ISIC_0010219.jpg\n",
      "ISIC_0010219.jpg -- jaccard index: 0.7945255637168884\n",
      "ISIC_0012969.jpg\n",
      "ISIC_0012969.jpg -- jaccard index: 0.6859782934188843\n",
      "ISIC_0011135.jpg\n",
      "ISIC_0011135.jpg -- jaccard index: 0.9368813633918762\n",
      "ISIC_0001188.jpg\n",
      "ISIC_0001188.jpg -- jaccard index: 0.8108096122741699\n",
      "ISIC_0011301.jpg\n",
      "ISIC_0011301.jpg -- jaccard index: 0.9106771945953369\n",
      "ISIC_0015040.jpg\n",
      "ISIC_0015040.jpg -- jaccard index: 0.643950879573822\n",
      "ISIC_0013203.jpg\n",
      "ISIC_0013203.jpg -- jaccard index: 0.7107819318771362\n",
      "ISIC_0007332.jpg\n",
      "ISIC_0007332.jpg -- jaccard index: 0.8409984111785889\n",
      "ISIC_0001118.jpg\n",
      "ISIC_0001118.jpg -- jaccard index: 0.9146125912666321\n",
      "ISIC_0010255.jpg\n",
      "ISIC_0010255.jpg -- jaccard index: 0.9633147120475769\n",
      "ISIC_0011101.jpg\n",
      "ISIC_0011101.jpg -- jaccard index: 0.8919466137886047\n",
      "ISIC_0009918.jpg\n",
      "ISIC_0009918.jpg -- jaccard index: 0.7804943919181824\n",
      "ISIC_0010335.jpg\n",
      "ISIC_0010335.jpg -- jaccard index: 0.8608413338661194\n",
      "ISIC_0009758.jpg\n",
      "ISIC_0009758.jpg -- jaccard index: 0.9332215785980225\n",
      "ISIC_0016025.jpg\n",
      "ISIC_0016025.jpg -- jaccard index: 0.6816536784172058\n",
      "ISIC_0013403.jpg\n",
      "ISIC_0013403.jpg -- jaccard index: 0.9531071186065674\n",
      "ISIC_0000200.jpg\n",
      "ISIC_0000200.jpg -- jaccard index: 0.7833583950996399\n",
      "ISIC_0010861.jpg\n",
      "ISIC_0010861.jpg -- jaccard index: 0.9204872250556946\n",
      "ISIC_0013325.jpg\n",
      "ISIC_0013325.jpg -- jaccard index: 0.7313849925994873\n",
      "ISIC_0016029.jpg\n",
      "ISIC_0016029.jpg -- jaccard index: 0.6838545799255371\n",
      "ISIC_0015510.jpg\n",
      "ISIC_0015510.jpg -- jaccard index: 0.819525957107544\n",
      "ISIC_0013321.jpg\n",
      "ISIC_0013321.jpg -- jaccard index: 0.09153266251087189\n",
      "ISIC_0000246.jpg\n",
      "ISIC_0000246.jpg -- jaccard index: 0.4598196744918823\n",
      "ISIC_0015948.jpg\n",
      "ISIC_0015948.jpg -- jaccard index: 0.6864742040634155\n",
      "ISIC_0014248.jpg\n",
      "ISIC_0014248.jpg -- jaccard index: 0.22686828672885895\n",
      "ISIC_0014780.jpg\n",
      "ISIC_0014780.jpg -- jaccard index: 0.9279690384864807\n",
      "ISIC_0001286.jpg\n",
      "ISIC_0001286.jpg -- jaccard index: 0.8961015343666077\n",
      "ISIC_0011162.jpg\n",
      "ISIC_0011162.jpg -- jaccard index: 0.8689653277397156\n",
      "ISIC_0010347.jpg\n",
      "ISIC_0010347.jpg -- jaccard index: 0.5449252128601074\n",
      "ISIC_0013603.jpg\n",
      "ISIC_0013603.jpg -- jaccard index: 0.8839104771614075\n",
      "ISIC_0014657.jpg\n",
      "ISIC_0014657.jpg -- jaccard index: 0.9295812845230103\n",
      "ISIC_0016024.jpg\n",
      "ISIC_0016024.jpg -- jaccard index: 0.6839012503623962\n",
      "ISIC_0013034.jpg\n",
      "ISIC_0013034.jpg -- jaccard index: 0.7958093285560608\n",
      "ISIC_0014845.jpg\n",
      "ISIC_0014845.jpg -- jaccard index: 0.9347479939460754\n",
      "ISIC_0000359.jpg\n",
      "ISIC_0000359.jpg -- jaccard index: 0.9565244913101196\n",
      "ISIC_0014158.jpg\n",
      "ISIC_0014158.jpg -- jaccard index: 0.9520717263221741\n",
      "ISIC_0014253.jpg\n",
      "ISIC_0014253.jpg -- jaccard index: 0.9358972311019897\n",
      "ISIC_0000301.jpg\n",
      "ISIC_0000301.jpg -- jaccard index: 0.9389904141426086\n",
      "ISIC_0010480.jpg\n",
      "ISIC_0010480.jpg -- jaccard index: 0.7737039923667908\n",
      "ISIC_0012094.jpg\n",
      "ISIC_0012094.jpg -- jaccard index: 0.9063997864723206\n",
      "ISIC_0014848.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ISIC_0014848.jpg -- jaccard index: 0.9522831439971924\n",
      "ISIC_0012108.jpg\n",
      "ISIC_0012108.jpg -- jaccard index: 0.8834151029586792\n",
      "ISIC_0013695.jpg\n",
      "ISIC_0013695.jpg -- jaccard index: 0.8377685546875\n",
      "ISIC_0000324.jpg\n",
      "ISIC_0000324.jpg -- jaccard index: 0.8481561541557312\n",
      "ISIC_0003728.jpg\n",
      "ISIC_0003728.jpg -- jaccard index: 0.08527374267578125\n",
      "ISIC_0015153.jpg\n",
      "ISIC_0015153.jpg -- jaccard index: 0.9306396842002869\n",
      "ISIC_0011219.jpg\n",
      "ISIC_0011219.jpg -- jaccard index: 0.9616196751594543\n",
      "ISIC_0013112.jpg\n",
      "ISIC_0013112.jpg -- jaccard index: 0.8011664748191833\n",
      "ISIC_0015980.jpg\n",
      "ISIC_0015980.jpg -- jaccard index: 0.8961063027381897\n",
      "ISIC_0012878.jpg\n",
      "ISIC_0012878.jpg -- jaccard index: 0.9295852184295654\n",
      "ISIC_0010444.jpg\n",
      "ISIC_0010444.jpg -- jaccard index: 0.7910277843475342\n",
      "ISIC_0009898.jpg\n",
      "ISIC_0009898.jpg -- jaccard index: 0.7682247161865234\n",
      "ISIC_0012260.jpg\n",
      "ISIC_0012260.jpg -- jaccard index: 0.877377986907959\n",
      "ISIC_0000387.jpg\n",
      "ISIC_0000387.jpg -- jaccard index: 0.8997378349304199\n",
      "ISIC_0012464.jpg\n",
      "ISIC_0012464.jpg -- jaccard index: 0.2583853602409363\n",
      "ISIC_0010017.jpg\n",
      "ISIC_0010017.jpg -- jaccard index: 0.8010273575782776\n",
      "ISIC_0000034.jpg\n",
      "ISIC_0000034.jpg -- jaccard index: 0.9540202617645264\n",
      "ISIC_0014722.jpg\n",
      "ISIC_0014722.jpg -- jaccard index: 0.8583032488822937\n",
      "ISIC_0016066.jpg\n",
      "ISIC_0016066.jpg -- jaccard index: 0.7535446882247925\n",
      "ISIC_0000299.jpg\n",
      "ISIC_0000299.jpg -- jaccard index: 0.9022659659385681\n",
      "ISIC_0010851.jpg\n",
      "ISIC_0010851.jpg -- jaccard index: 0.8365203738212585\n",
      "ISIC_0000203.jpg\n",
      "ISIC_0000203.jpg -- jaccard index: 0.9795958995819092\n",
      "ISIC_0010595.jpg\n",
      "ISIC_0010595.jpg -- jaccard index: 0.8877015113830566\n",
      "ISIC_0012323.jpg\n",
      "ISIC_0012323.jpg -- jaccard index: 0.6946043968200684\n",
      "ISIC_0000142.jpg\n",
      "ISIC_0000142.jpg -- jaccard index: 0.9166504144668579\n",
      "ISIC_0000020.jpg\n",
      "ISIC_0000020.jpg -- jaccard index: 0.9264573454856873\n",
      "ISIC_0000173.jpg\n",
      "ISIC_0000173.jpg -- jaccard index: 0.7737312912940979\n",
      "ISIC_0000476.jpg\n",
      "ISIC_0000476.jpg -- jaccard index: 0.768205463886261\n",
      "ISIC_0013044.jpg\n",
      "ISIC_0013044.jpg -- jaccard index: 0.9271487593650818\n",
      "ISIC_0000032.jpg\n",
      "ISIC_0000032.jpg -- jaccard index: 0.9240419268608093\n",
      "ISIC_0015476.jpg\n",
      "ISIC_0015476.jpg -- jaccard index: 0.9167096018791199\n",
      "ISIC_0009965.jpg\n",
      "ISIC_0009965.jpg -- jaccard index: 0.7726005911827087\n",
      "ISIC_0014838.jpg\n",
      "ISIC_0014838.jpg -- jaccard index: 0.9222370982170105\n",
      "ISIC_0000249.jpg\n",
      "ISIC_0000249.jpg -- jaccard index: 0.9248223900794983\n",
      "ISIC_0015008.jpg\n",
      "ISIC_0015008.jpg -- jaccard index: 0.863370418548584\n",
      "ISIC_0013678.jpg\n",
      "ISIC_0013678.jpg -- jaccard index: 0.9199825525283813\n",
      "ISIC_0011161.jpg\n",
      "ISIC_0011161.jpg -- jaccard index: 0.6828447580337524\n",
      "ISIC_0012415.jpg\n",
      "ISIC_0012415.jpg -- jaccard index: 0.8744605183601379\n",
      "ISIC_0010265.jpg\n",
      "ISIC_0010265.jpg -- jaccard index: 0.7523708939552307\n",
      "ISIC_0014723.jpg\n",
      "ISIC_0014723.jpg -- jaccard index: 0.9294858574867249\n",
      "ISIC_0000319.jpg\n",
      "ISIC_0000319.jpg -- jaccard index: 0.9473544955253601\n",
      "ISIC_0014987.jpg\n",
      "ISIC_0014987.jpg -- jaccard index: 0.8992642164230347\n",
      "ISIC_0014526.jpg\n",
      "ISIC_0014526.jpg -- jaccard index: 0.7048640251159668\n",
      "ISIC_0014506.jpg\n",
      "ISIC_0014506.jpg -- jaccard index: 0.8485283851623535\n",
      "ISIC_0012708.jpg\n",
      "ISIC_0012708.jpg -- jaccard index: 0.9083705544471741\n",
      "ISIC_0000392.jpg\n",
      "ISIC_0000392.jpg -- jaccard index: 0.6210978031158447\n",
      "ISIC_0010476.jpg\n",
      "ISIC_0010476.jpg -- jaccard index: 0.8495838642120361\n",
      "ISIC_0014183.jpg\n",
      "ISIC_0014183.jpg -- jaccard index: 0.4777320325374603\n",
      "ISIC_0014724.jpg\n",
      "ISIC_0014724.jpg -- jaccard index: 0.8889420628547668\n",
      "ISIC_0000252.jpg\n",
      "ISIC_0000252.jpg -- jaccard index: 0.9613393545150757\n",
      "ISIC_0001769.jpg\n",
      "ISIC_0001769.jpg -- jaccard index: 0.9341657161712646\n",
      "ISIC_0012690.jpg\n",
      "ISIC_0012690.jpg -- jaccard index: 0.9006540179252625\n",
      "ISIC_0014968.jpg\n",
      "ISIC_0014968.jpg -- jaccard index: 0.9251002669334412\n",
      "ISIC_0014580.jpg\n",
      "ISIC_0014580.jpg -- jaccard index: 0.5687733888626099\n",
      "ISIC_0010056.jpg\n",
      "ISIC_0010056.jpg -- jaccard index: 0.9516288042068481\n",
      "ISIC_0016065.jpg\n",
      "ISIC_0016065.jpg -- jaccard index: 0.9124571681022644\n",
      "ISIC_0013966.jpg\n",
      "ISIC_0013966.jpg -- jaccard index: 0.054280802607536316\n",
      "ISIC_0004309.jpg\n",
      "ISIC_0004309.jpg -- jaccard index: 0.7250633239746094\n",
      "ISIC_0013738.jpg\n",
      "ISIC_0013738.jpg -- jaccard index: 0.9097254872322083\n",
      "ISIC_0000119.jpg\n",
      "ISIC_0000119.jpg -- jaccard index: 0.9009504318237305\n",
      "ISIC_0000081.jpg\n",
      "ISIC_0000081.jpg -- jaccard index: 0.653439998626709\n",
      "ISIC_0011118.jpg\n",
      "ISIC_0011118.jpg -- jaccard index: 0.9341689348220825\n",
      "ISIC_0012950.jpg\n",
      "ISIC_0012950.jpg -- jaccard index: 0.9502739310264587\n",
      "ISIC_0005666.jpg\n",
      "ISIC_0005666.jpg -- jaccard index: 0.8800027966499329\n",
      "ISIC_0000477.jpg\n",
      "ISIC_0000477.jpg -- jaccard index: 0.8482135534286499\n",
      "ISIC_0000322.jpg\n",
      "ISIC_0000322.jpg -- jaccard index: 0.8775859475135803\n",
      "ISIC_0016040.jpg\n",
      "ISIC_0016040.jpg -- jaccard index: 0.8522335886955261\n",
      "ISIC_0010028.jpg\n",
      "ISIC_0010028.jpg -- jaccard index: 0.9506291151046753\n",
      "ISIC_0014394.jpg\n",
      "ISIC_0014394.jpg -- jaccard index: 0.7222927212715149\n",
      "ISIC_0015125.jpg\n",
      "ISIC_0015125.jpg -- jaccard index: 0.9512102603912354\n",
      "ISIC_0012654.jpg\n",
      "ISIC_0012654.jpg -- jaccard index: 0.8022690415382385\n",
      "ISIC_0013793.jpg\n",
      "ISIC_0013793.jpg -- jaccard index: 0.9178867936134338\n",
      "ISIC_0010349.jpg\n",
      "ISIC_0010349.jpg -- jaccard index: 0.891873836517334\n",
      "ISIC_0015223.jpg\n",
      "ISIC_0015223.jpg -- jaccard index: 0.9567399024963379\n",
      "ISIC_0013459.jpg\n",
      "ISIC_0013459.jpg -- jaccard index: 0.8124997615814209\n",
      "ISIC_0010069.jpg\n",
      "ISIC_0010069.jpg -- jaccard index: 0.9480007886886597\n",
      "ISIC_0013610.jpg\n",
      "ISIC_0013610.jpg -- jaccard index: 0.8952290415763855\n",
      "ISIC_0012735.jpg\n",
      "ISIC_0012735.jpg -- jaccard index: 0.946370005607605\n",
      "ISIC_0013390.jpg\n",
      "ISIC_0013390.jpg -- jaccard index: 0.8778867721557617\n",
      "ISIC_0000075.jpg\n",
      "ISIC_0000075.jpg -- jaccard index: 0.967962384223938\n",
      "ISIC_0012940.jpg\n",
      "ISIC_0012940.jpg -- jaccard index: 0.3744765818119049\n",
      "ISIC_0015293.jpg\n",
      "ISIC_0015293.jpg -- jaccard index: 0.8301504254341125\n",
      "ISIC_0000221.jpg\n",
      "ISIC_0000221.jpg -- jaccard index: 0.8664695620536804\n",
      "ISIC_0010215.jpg\n",
      "ISIC_0010215.jpg -- jaccard index: 0.8070104718208313\n",
      "ISIC_0015483.jpg\n",
      "ISIC_0015483.jpg -- jaccard index: 0.8285317420959473\n",
      "ISIC_0000212.jpg\n",
      "ISIC_0000212.jpg -- jaccard index: 0.8541707396507263\n",
      "ISIC_0016045.jpg\n",
      "ISIC_0016045.jpg -- jaccard index: 0.916604220867157\n",
      "ISIC_0005555.jpg\n",
      "ISIC_0005555.jpg -- jaccard index: 0.7353947162628174\n",
      "ISIC_0000330.jpg\n",
      "ISIC_0000330.jpg -- jaccard index: 0.919512927532196\n",
      "ISIC_0014932.jpg\n",
      "ISIC_0014932.jpg -- jaccard index: 0.499654620885849\n",
      "ISIC_0010233.jpg\n",
      "ISIC_0010233.jpg -- jaccard index: 0.9679006338119507\n",
      "ISIC_0012887.jpg\n",
      "ISIC_0012887.jpg -- jaccard index: 0.8616681694984436\n",
      "ISIC_0015969.jpg\n",
      "ISIC_0015969.jpg -- jaccard index: 0.359525203704834\n",
      "ISIC_0013803.jpg\n",
      "ISIC_0013803.jpg -- jaccard index: 0.8572575449943542\n",
      "ISIC_0015981.jpg\n",
      "ISIC_0015981.jpg -- jaccard index: 0.9598581790924072\n",
      "ISIC_0010262.jpg\n",
      "ISIC_0010262.jpg -- jaccard index: 0.888701319694519\n",
      "ISIC_0015971.jpg\n",
      "ISIC_0015971.jpg -- jaccard index: 0.9461904764175415\n",
      "ISIC_0013160.jpg\n",
      "ISIC_0013160.jpg -- jaccard index: 0.775360643863678\n",
      "ISIC_0000518.jpg\n",
      "ISIC_0000518.jpg -- jaccard index: 0.9005179405212402\n",
      "ISIC_0013178.jpg\n",
      "ISIC_0013178.jpg -- jaccard index: 0.6948257088661194\n",
      "ISIC_0010372.jpg\n",
      "ISIC_0010372.jpg -- jaccard index: 0.8914812803268433\n",
      "ISIC_0000087.jpg\n",
      "ISIC_0000087.jpg -- jaccard index: 0.9376245141029358\n",
      "ISIC_0000089.jpg\n",
      "ISIC_0000089.jpg -- jaccard index: 0.925176203250885\n",
      "ISIC_0016000.jpg\n",
      "ISIC_0016000.jpg -- jaccard index: 0.8830022811889648\n",
      "ISIC_0014603.jpg\n",
      "ISIC_0014603.jpg -- jaccard index: 0.8915348052978516\n",
      "ISIC_0014844.jpg\n",
      "ISIC_0014844.jpg -- jaccard index: 0.897769033908844\n",
      "ISIC_0012259.jpg\n",
      "ISIC_0012259.jpg -- jaccard index: 0.9289762377738953\n",
      "ISIC_0013702.jpg\n",
      "ISIC_0013702.jpg -- jaccard index: 0.6060020327568054\n",
      "ISIC_0013897.jpg\n",
      "ISIC_0013897.jpg -- jaccard index: 0.8721995949745178\n",
      "ISIC_0013320.jpg\n",
      "ISIC_0013320.jpg -- jaccard index: 0.9471573829650879\n",
      "ISIC_0013721.jpg\n",
      "ISIC_0013721.jpg -- jaccard index: 0.3733179569244385\n",
      "ISIC_0013052.jpg\n",
      "ISIC_0013052.jpg -- jaccard index: 0.7915865182876587\n",
      "ISIC_0000204.jpg\n",
      "ISIC_0000204.jpg -- jaccard index: 0.9073100090026855\n",
      "ISIC_0012840.jpg\n",
      "ISIC_0012840.jpg -- jaccard index: 0.9078893065452576\n",
      "ISIC_0016037.jpg\n",
      "ISIC_0016037.jpg -- jaccard index: 0.8495195508003235\n",
      "ISIC_0014410.jpg\n",
      "ISIC_0014410.jpg -- jaccard index: 0.6456158757209778\n",
      "ISIC_0012201.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ISIC_0012201.jpg -- jaccard index: 0.9574273824691772\n",
      "ISIC_0013690.jpg\n",
      "ISIC_0013690.jpg -- jaccard index: 0.6082183122634888\n",
      "ISIC_0013972.jpg\n",
      "ISIC_0013972.jpg -- jaccard index: 0.4598482847213745\n",
      "ISIC_0006021.jpg\n",
      "ISIC_0006021.jpg -- jaccard index: 0.8173379302024841\n",
      "ISIC_0012164.jpg\n",
      "ISIC_0012164.jpg -- jaccard index: 0.857143223285675\n",
      "ISIC_0015212.jpg\n",
      "ISIC_0015212.jpg -- jaccard index: 0.9537661075592041\n",
      "ISIC_0014726.jpg\n",
      "ISIC_0014726.jpg -- jaccard index: 0.8520596027374268\n",
      "ISIC_0000313.jpg\n",
      "ISIC_0000313.jpg -- jaccard index: 0.8853556513786316\n",
      "ISIC_0000370.jpg\n",
      "ISIC_0000370.jpg -- jaccard index: 0.9230806827545166\n",
      "ISIC_0015034.jpg\n",
      "ISIC_0015034.jpg -- jaccard index: 0.9692023396492004\n",
      "ISIC_0001191.jpg\n",
      "ISIC_0001191.jpg -- jaccard index: 0.831539511680603\n",
      "ISIC_0011202.jpg\n",
      "ISIC_0011202.jpg -- jaccard index: 0.8002237677574158\n",
      "ISIC_0013109.jpg\n",
      "ISIC_0013109.jpg -- jaccard index: 0.8790902495384216\n",
      "ISIC_0000247.jpg\n",
      "ISIC_0000247.jpg -- jaccard index: 0.7548422813415527\n",
      "ISIC_0010321.jpg\n",
      "ISIC_0010321.jpg -- jaccard index: 0.834546685218811\n",
      "ISIC_0014076.jpg\n",
      "ISIC_0014076.jpg -- jaccard index: 0.8611716628074646\n",
      "ISIC_0014708.jpg\n",
      "ISIC_0014708.jpg -- jaccard index: 0.9228114485740662\n",
      "ISIC_0011084.jpg\n",
      "ISIC_0011084.jpg -- jaccard index: 0.7378353476524353\n",
      "ISIC_0014273.jpg\n",
      "ISIC_0014273.jpg -- jaccard index: 0.8879097700119019\n",
      "ISIC_0015360.jpg\n",
      "ISIC_0015360.jpg -- jaccard index: 0.8043639063835144\n",
      "ISIC_0001213.jpg\n",
      "ISIC_0001213.jpg -- jaccard index: 0.8485819101333618\n",
      "ISIC_0008236.jpg\n",
      "ISIC_0008236.jpg -- jaccard index: 0.9068269729614258\n",
      "ISIC_0013230.jpg\n",
      "ISIC_0013230.jpg -- jaccard index: 0.9267148971557617\n",
      "ISIC_0013275.jpg\n",
      "ISIC_0013275.jpg -- jaccard index: 0.8995116949081421\n",
      "ISIC_0013863.jpg\n",
      "ISIC_0013863.jpg -- jaccard index: 0.6280164122581482\n",
      "ISIC_0015963.jpg\n",
      "ISIC_0015963.jpg -- jaccard index: 0.875339150428772\n",
      "ISIC_0015016.jpg\n",
      "ISIC_0015016.jpg -- jaccard index: 0.945304274559021\n",
      "ISIC_0011374.jpg\n",
      "ISIC_0011374.jpg -- jaccard index: 0.5728573799133301\n",
      "ISIC_0009868.jpg\n",
      "ISIC_0009868.jpg -- jaccard index: 0.7816997170448303\n",
      "ISIC_0015968.jpg\n",
      "ISIC_0015968.jpg -- jaccard index: 0.6129207611083984\n",
      "ISIC_0010346.jpg\n",
      "ISIC_0010346.jpg -- jaccard index: 0.7756614089012146\n",
      "ISIC_0010232.jpg\n",
      "ISIC_0010232.jpg -- jaccard index: 0.8937328457832336\n",
      "ISIC_0014434.jpg\n",
      "ISIC_0014434.jpg -- jaccard index: 0.7389633655548096\n",
      "ISIC_0011139.jpg\n",
      "ISIC_0011139.jpg -- jaccard index: 0.774814784526825\n",
      "ISIC_0012258.jpg\n",
      "ISIC_0012258.jpg -- jaccard index: 0.08058466017246246\n",
      "ISIC_0007557.jpg\n",
      "ISIC_0007557.jpg -- jaccard index: 0.8471824526786804\n",
      "ISIC_0012742.jpg\n",
      "ISIC_0012742.jpg -- jaccard index: 0.16097640991210938\n",
      "ISIC_0012884.jpg\n",
      "ISIC_0012884.jpg -- jaccard index: 0.8816508054733276\n",
      "ISIC_0015030.jpg\n",
      "ISIC_0015030.jpg -- jaccard index: 0.8506781458854675\n",
      "ISIC_0000162.jpg\n",
      "ISIC_0000162.jpg -- jaccard index: 0.9344553351402283\n",
      "ISIC_0011130.jpg\n",
      "ISIC_0011130.jpg -- jaccard index: 0.784672200679779\n",
      "ISIC_0012235.jpg\n",
      "ISIC_0012235.jpg -- jaccard index: 0.9345971345901489\n",
      "ISIC_0012883.jpg\n",
      "ISIC_0012883.jpg -- jaccard index: 0.886467456817627\n",
      "ISIC_0009252.jpg\n",
      "ISIC_0009252.jpg -- jaccard index: 0.7644957900047302\n",
      "ISIC_0000492.jpg\n",
      "ISIC_0000492.jpg -- jaccard index: 0.8733847141265869\n",
      "ISIC_0014361.jpg\n",
      "ISIC_0014361.jpg -- jaccard index: 0.8938607573509216\n",
      "ISIC_0013238.jpg\n",
      "ISIC_0013238.jpg -- jaccard index: 0.8943427801132202\n",
      "ISIC_0014680.jpg\n",
      "ISIC_0014680.jpg -- jaccard index: 0.9258508086204529\n",
      "ISIC_0013224.jpg\n",
      "ISIC_0013224.jpg -- jaccard index: 0.9300139546394348\n",
      "ISIC_0015174.jpg\n",
      "ISIC_0015174.jpg -- jaccard index: 0.8829282522201538\n",
      "ISIC_0014316.jpg\n",
      "ISIC_0014316.jpg -- jaccard index: 0.8670825362205505\n",
      "ISIC_0007322.jpg\n",
      "ISIC_0007322.jpg -- jaccard index: 0.7703927755355835\n",
      "ISIC_0012136.jpg\n",
      "ISIC_0012136.jpg -- jaccard index: 0.4498981237411499\n",
      "ISIC_0015962.jpg\n",
      "ISIC_0015962.jpg -- jaccard index: 0.9029924869537354\n",
      "ISIC_0000479.jpg\n",
      "ISIC_0000479.jpg -- jaccard index: 0.803449273109436\n",
      "ISIC_0000366.jpg\n",
      "ISIC_0000366.jpg -- jaccard index: 0.8876547813415527\n"
     ]
    }
   ],
   "source": [
    "predictTestSet(model_localtion)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "file_names = next(os.walk(test_data_dir))[2]\n",
    "image = file_names[1]\n",
    "fig = plt.figure()\n",
    "\n",
    "a = fig.add_subplot(1, 4, 1)\n",
    "imgplot = plt.imshow(load_img(os.path.join(test_data_dir,image)), shape = (256,256))\n",
    "a.set_title('Image')\n",
    "a.set_axis_off()\n",
    "\n",
    "a = fig.add_subplot(1, 4, 2)\n",
    "imgplot = plt.imshow(load_img(os.path.join(test_data_mask_dir,image.split('.')[0]+\"_segmentation.png\")), shape = (256,256))\n",
    "a.set_title('Mask')\n",
    "a.set_axis_off()\n",
    "\n",
    "a = fig.add_subplot(1, 4, 3)\n",
    "imgplot = plt.imshow(load_img(os.path.join(test_data_pred_dir,image.split('.')[0]+\"_predict.jpg\")), shape = (256,256))\n",
    "a.set_title('Prediction')\n",
    "a.set_axis_off()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.output"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test Jaccard Index:0.8222325916749609\n",
      "Total number of low prediction (jaccard index < 0.65):52\n",
      "Threshold Jaccard Index:0.7788077731545154\n"
     ]
    }
   ],
   "source": [
    "with open(result_file,\"r\") as f:\n",
    "    data = f.readlines()\n",
    "    scores = [];\n",
    "\n",
    "    for line in data[1:]:\n",
    "        result = line.split(',')\n",
    "        scores.append([result[0], result[1][:-1]])\n",
    "\n",
    "scores = np.array(scores)\n",
    "sorted_scores = scores[scores[:,1].argsort()]\n",
    "print('Test Jaccard Index:{}'.format(scores[:,1].astype(float).mean()))\n",
    "low_scores = scores[scores[:,1].astype(float)<0.65]\n",
    "low_scores = low_scores[low_scores[:,1].argsort()]\n",
    "print('Total number of low prediction (jaccard index < 0.65):{}'.format(len(low_scores)) )\n",
    "print('Threshold Jaccard Index:{}'.format(np.sum(scores[scores[:,1].astype(float)>0.65][:,1].astype(float)) / len(scores)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
